블로그를 벨로그로 바꾸기로 했다! 이전에 쓰던 글도 하나씩 옮겨와야겠다
A. HTML 파싱-DOM 트리 빌드-CSSOM 트리 빌드-렌더링 트리 형성-노드의 기하학적 형태 계산-개별 노드를 화면에 페인트-합성&렌더-레이아웃&리페인트
A.
"인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것" —— by mdn.
JavaScript가 컴파일 과정에서 모든 스코프를 탐색하며 변수에 대한 선언과 초기화를 분리하여 선언에 대한 메모리부터 할당하는 것 (선언만 코드의 최상단으로 옮기는 것과 비슷한 효과)
-> 변수 선언 전에 사용이 가능하긴 하지만 초기화 전에 사용하면 값을 읽을 수는 없다
var
는 undefined
로 초기화, let
/const
는 초기화하지 않음
=> let
/const
에서 호이스팅된 부분과 실제 선언부 사이에서 변수가 존재는 하지만 초기화되지 않은 부분을 TDZ(Temporal Dead Zone) 라고 함(변수 사용하면 ReferenceError 발생)
var
과 함수는 선언 전 사용 가능, let
/const
/class
는 불가능
※선언(식별자 수집), 초기화(메모리 할당 및 undefined
부여), 할당(값 넘겨주기)은 모두 다른 것
일단 클로저는 JS의 고유한 개념은 아니다
A. 함수와 그 함수가 선언된 lexcial 환경의 조합
-> 어떤 함수 A에서 선언한 변수 a를 참조하는 내부함수 B를 외부로 전달할 경우, A의 실행 컨텍스트가 끝난 뒤에도 변수 a가 사라지지 않는 현상