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
'JS > JavaScript' 카테고리의 다른 글
[JavaScript] 이벤트 (0) | 2022.05.09 |
---|---|
[JavaScript] 폼객체 예제 (회원가입) (0) | 2022.05.09 |
[JavaScript] 폼객체 (0) | 2022.05.04 |
[JavaScript] 노드 (0) | 2022.05.03 |
[JavaScript] 문서 객체 모델(Document Object Model) (0) | 2022.05.03 |