JS/JavaScript
[JaraScript] 변수와 함수의 호이스팅
에띠
2023. 9. 11. 16:57
728x90
호이스팅이란?
인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트(import)의 선언문을 해당 범위의 맨 위로 이동시키는 과정으로 함수, 변수 등을 선언 이전에 호출시켜도 호출이 되는 것.
변수(함수) 선언 단계
let과 const 변수의 선언 단계
var 변수의 선언 단계
let과 const 키워드 / var 키워드
console.log(letKeyword);
// let, const키워드는 메모리가 할당되기 전 참조하려고(TDZ에 위치) 하기 때문에 Error
// letKeyword is not defined
let letKeyword = 'let is safe';
console.log(varKeyword);
// var 키워드는 선언 단계와 초기화 단계가 묶어져서 진행되므로 선언됨과 동시에 초기화가 진행.
// 데이터는 존재하지 않는 상태.
// undefined
var varKeyword = 'var is not safe';
* 함수 표현식은 TDZ 의 영향을 받는다. (let, const 키워드와 동일)
* 함수 선언식은 TDZ의 영향을 받지 않는다. (var 키워드와 동일. but 할당 단계도 동시에 진행 됨)
728x90