TIL] 엘리스 SW 엔지니어 트랙 Day 016
글 작성자: 망고좋아
반응형
📖 오늘 배운 내용 - 2021.11.13
- 자바스크립트 변수 정의 과정
- 호이스팅
- 자바스크립트 내장 객체
📝 자바스크립트 변수 정의 과정
- variable object와 Scope chain은 렉시컬 환경에 속한다
📕 자바스크립트 엔진
- 자바스크립트 엔진은 자바스크립트 코드를 읽어 실행하는 프로그램이다.
- 작성된 코드는 엔진을 통해 파싱 되고 실행된다. 크롬은 V8엔진 사용
- node.js는 브라우저 외의 환경에서 JS코드를 실행하도록 하는 프로그램이다. V8사용
- 브라우저 환경과 node.js 환경은 같은 JS코드를 작성해도 다르게 동작할 수 있다.
📕 자바스크립트 코드 실행
- JS엔진은 코드 실행 전 실행 컨텍스트를 생성한다.
- 실행 컨텍스트는 두 단계를 통해 생성된다.
- 생성 단계에서 JS엔진은 변수 선언을 읽는다.
- 실행 단계에서 JS엔진은 변수 값을 할당한다.
📕 렉시컬 환경(Lexical Environment)
- 함수의 렉시컬 환경은 함수가 사용하는 변수들을 둘러싼 환경을 의미한다.
- 특정 변수의 값은 함수의 렉시컬 환경 안에서 찾을 수 있다.
- 렉시컬 환경은 실행 컨텍스트 안에 정의된 Variable Object로 이해할 수 있다.
- 실행 컨텍스트 안에 렉시컬 환경이 있어서 스코프 체인도 실행 컨텍스트 안에 있다.
[JavaScript] 자바스크립트 변수의 유효범위, 렉시컬 환경
🎯 변수의 유효 범위, 렉시컬 환경 📝 렉시컬 환경 function printName() { return 'Hyunsol' } function findName() { return printName() } function sayMyName() { return findName() } sayMyName() 렉시컬..
lakelouise.tistory.com
📕 생성 단계에서의 코드 실행
- JS 엔진은 생성 단계에서 함수 선언문, 함수 표현식, 변수 등을 읽어 실행 컨텍스트에 저장한다.
- 변수의 경우 실행 컨텍스트의 렉시컬 환경을 구성한다.
- 함수 선언문 외에 변수는 값이 저장되지 않는다.
- 함수의 경우에는 값까지 저장된다.
📕 실행 단계에서의 코드 실행
- JS 엔진은 변수에 값을 할당하는 구문을 만나면 실행 컨텍스트에 값을 저장한다.
- 그 전에는 let, const는 uninitialize, var는 undefined
- 그 외 코드를 한 줄씩 읽어 나가며 실행한다.
📝 자바스크립트 호이스팅, Hoisting
[JavaScript] 자바스크립트 블록레벨 스코프, 함수레벨 스코프
🎯 블록 레벨 스코프, 함수 레벨 스코프 📝 함수 레벨 스코프(Function-level scope) 함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉, 함수 내부에서 선언한
lakelouise.tistory.com
📝 자바스크립트 내장 객체
📕 globalThis
- globalThis는 전역 객체를 지칭하는 변수이다.
- 전역 객체는 환경에 따라 다르다.
- 브라우저 환경은 window, node 환경은 global 객체를 지칭한다.
- globalThis는 환경별 차이를 통일하여 하나의 변수로 서로 다른 전역 객체를 가리키게 된다.
📕 window
- DOM document를 포함하는 창을 나타내는 객체
- 전역 스코프에 선언된 변수는 모두 window의 property가 된다.
- 현재 창의 정보를 얻거나, 창을 조작한다.
📕 document
- 브라우저에 로드된 웹페이지
- 문서의 title, URL 등의 정보를 얻는다.
- element 생성, 검색 등의 기능 제공
- createElement, createTextNode는 동적으로 원소를 생성한다.
- 이를 이용해 자바스크립트만으로 원소를 구성할 수 있다.
📕 NaN
- NaN : Not a Number를 나타내는 객체
- isNaN() : 전역 함수로 입력 값을 숫자로 변환했을 때 NaN이 되는지를 검사
📕 Data
- 특정 시점의 날짜를 표시하기 위한 객체
- Date.getDay() : 요일 반환, 0(일요일) ~ 6(토요일)
- Date.setDate() : 시간 설정
- DateString() : 특정 포맷의 문자열을 반환
- getTime() : 시간을 밀리초 단위로 반환
- 밀리초는 1970.1.1 시점부터 흐른 시간
Date.prototype.getFullYear - 년도
Date.prototype.getMonth - 월 - 1 (1월은 0, 2월은 1, ...)
Date.prototype.getDate - 일
Date.prototype.getHours - 시
Date.prototype.getMinutes - 분
Date.prototype.getSeconds - 초
📝 Date 객체 확인 방법
// 방법 1
Object.prototype.toString.call(date) === '[object Date]
// 방법 2
date instanceof Date
💡 오늘 깨달은 것
- 이번 주 난이도가 올라가면서 내용 및 문제들이 많이 어려워졌다. 디스코드 레이서 채널을 보면서 다시 한번 느낀 거는
내가 어려우면 다른 사람들도 어려워한다.
주눅 들지 말고 노력한 뒤에 질문해보자! - 스터디에서 렉시컬 환경에 대해서 발표한 적이 있어서 다시 한번 복습할 수 있었던 시간이었다.
- variable object와 Scope chain은 렉시컬 환경에 속한다
- 소문자 판별
el >= "a" && el<= "z"
- 실시간으로 현재 시간의 밀리초를 얻기 :
Date.now()
📌 참고
반응형
'프로그래밍 > Today I Learned' 카테고리의 다른 글
[TIL] 엘리스 SW 엔지니어 트랙 Day 018 (0) | 2021.11.17 |
---|---|
[TIL] 엘리스 SW 엔지니어 트랙 Day 017 (0) | 2021.11.16 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 015 (0) | 2021.11.13 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 014 (0) | 2021.11.11 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 013 (0) | 2021.11.10 |
댓글
이 글 공유하기
다른 글
-
[TIL] 엘리스 SW 엔지니어 트랙 Day 018
[TIL] 엘리스 SW 엔지니어 트랙 Day 018
2021.11.17 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 017
[TIL] 엘리스 SW 엔지니어 트랙 Day 017
2021.11.16 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 015
[TIL] 엘리스 SW 엔지니어 트랙 Day 015
2021.11.13 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 014
[TIL] 엘리스 SW 엔지니어 트랙 Day 014
2021.11.11