본문 바로가기

JS/JavaScript

[JaraScript] 변수와 함수의 호이스팅

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