반응형
Hoisting
" 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것 "
- 함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것
- 자바스크립트의 모든 선언에는 호이스팅이 일어남
- let, const, class를 이용한 선언문은 발생하지않은 것 처럼 동작
- var 변수 선언과 함수선언문에서 동작
🔔 함수표현식은 hoisting x
- Parser가 함수 실행 전 해당 함수를 한번 훑음
- 자바스크립트 함수는 실행되기 전에 함수 안에 필요한 변수값들을 모두 모아서 유효 범위의 최상단에 선언
- 정보를 기억하고 있다가 실행
- 실제 메모리나 코드의 변화는 x
변수 생성 단계 : 선언 -> 초기화 -> 할당
- var로 선언한 변수는 호이스팅 시 undefined로 변수를 초기화함
- let, const는 변수를 초기화하지 않기때문에 초기화전에 접근할 시에 참조 에러 발생
- const는 재선언 재할당이 불가능하기 때문에 선언과 동시에 초기화가 필요함
- 스코프의 시작에서 변수으 선언까지 일시적 사각지대(TDZ)에 빠지기 때문
🔔 일시적 사각지대(Temporal Dead Zone) : 스코프의 시작 지점부터 초기화 시작 지점까지의 구간