카테고리 없음

자바스크리트 기술인터뷰 단골 질문 : var, let, const 차이를 설명하시오

devwriter 2021. 2. 1. 18:05

스코프

var는 함수레벨, let, const는 블럭레벨

 

재선언

var는 재선언해도 되지만 let, const는 재선언시 에러남

 

초기값

var, let는 선언 시 초기값이 없어도 되지만 const는 초기값 없으면 에러남

 

재할당

var, let는 재할당 되지만 const는 재할당 안됨

 

호이스팅

var, let, const, function, class 등의 키워드는 호이스팅 됨

 

TDZ (Temporal Dead Zone)

변수의 생성 단계 : 선언 -> 초기화 -> 할당

var는 선언과 초기화가 한번에 이루어 짐

// var 호이스팅 => 변수 선언 & 초기화

console.log(var_val); // undefined

var var_val;

console.log(var_val); // undefiled

var_val=1

console.log(var_val); // 1



// let 호이스팅 => 선언

console.log(let_val); // error

let let_val; // <= 초기화

console.log(let_val); // undefiled

let_val=1 // <= 할당

console.log(let_val); // 1

 

다시 호이스팅 (feat. 블럭레벨 스코프)

let은 호이스팅이 일어 나지 않는 것과 현상이 동일하다.

호이스팅이 일어났는지 어떻게 알 수 있을까?

let let_val=1;
{
    // 호이스팅이 일어 나지 않는다면 1, 일어 난다면 error
    console.log(let_val); 
    let let_val = 1;
}