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