Hoisting | 호이스팅
- 변수, 함수의 선언부가 현재 위치한 인접 스코프 내의 시작 지점에서 해당 식별자의 관측이 가능한 자바스크립트 엔진의 컴파일 전처리 과정 중 일부다.
- 자바스크립트 코드는 실행(런타임)하기 전에 메모리에 실행할 특정 데이터(선언문)를 저장하는데, 이것은 인터프리터 언어의 단점인 컴파일 속도가 느린 단점을 보완하기 위한 과정으로 자바스크립트에서만 가지고 있는 특징 중 하나에 속한다. 이렇게 데이터가 스코프의 맨 위로 올라가는 만큼 변수의 라이프 사이클, 즉 생성과 초기화, 할당 등에 있어서 동작하는 방식(규칙)이 저마다 다르다.
📋 요약
1. 변수 호이스팅 ( var, let, const )
생성된 식별자는 undefined로 초기화
var
- 선언과 초기화 단계가 한 번에 수행 (시작 지점에서 바로 참조, 할당이 가능)
let / const
- 선언과 초기화 단계가 나뉘어 진행
- 선언부에 도달하기 전 까지 값에 대해 접근 할 수 없음 ( TDZ 동안 참조, 할당 불가능 )
2. 함수 호이스팅 ( = 함수 선언문 )
- 함수 표현식 ⇒ 함수 호이스팅 X ( 변수 호이스팅 O )
- 변수 호이스팅 보다 먼저 실행되어 식별자를 생성 (생성된 식별자는 함수 객체로 초기화)
- 선언과 초기화 단계가 한 번에 수행 (시작 지점에서 바로 참조, 호출이 가능)
참조
[링크] You-Dont-Know-JS/ch1.md at 2nd-ed · getify/You-Dont-Know-JS
GitHub - getify/You-Dont-Know-JS: A book series on JavaScript. @YDKJS on twitter.
A book series on JavaScript. @YDKJS on twitter. Contribute to getify/You-Dont-Know-JS development by creating an account on GitHub.
github.com
[링크] 호이스팅에 대한 오해와 진실
호이스팅에 대한 오해와 진실
…
tecoble.techcourse.co.kr
'Language > JavaScript' 카테고리의 다른 글
코어 자바스크립트 스터디 회고 (0) | 2022.12.30 |
---|---|
var, let, const (0) | 2022.06.30 |
API와 브라우저의 객체 구조 (0) | 2021.10.22 |