web/javascript

[Javascript] 변수 키워드의 차이점(var, let, const)

sungjine 2022. 3. 15. 00:15
반응형

let과 const는 ES6 (2015)에서 추가됐다.

let과 const의 차이는 크지 않다.

 

const는 상수이며 선언 시 초기화가 반드시 필요하고 let은 변수이며 초기화를 반드시 할 필요는 없으며 이 외에는 같다고 보면 된다.

const a; // SyntaxError
const b = 1; // ok
b = 3; // TypeError

let c; // ok
let d = 1; // ok
d = 3 // ok

 

이제 var과의 차이를 보면

let, const는 재선언이 불가능하고 var는 가능하다.

let a = 1;
let a = 2; // SyntaxError

var b = 1;
var b = 2; // ok

 

let, const는 선언된 블록에 영향을 받는다. var는 선언된 함수에 영향을 받는다.

function a() {
    var b = 1;
    {
        var b = 2;
        console.log(b); // 2
    }
    console.log(b); // 2
    
    let c = 1;
    {
        let c = 2;
        console.log(c); // 2
    }
    console.log(c); // 1
}

 

let, const는 선언되기 전에 사용되면 에러가 발생하고 var는 에러가 발생하지 않는다. 선언 전에 호출하면 에러가 발생하는 이유는 시간상 사각지대(Temporal Dead Zone, TDZ)에 들어가기 때문이다.

console.log(a); // ReferenceError
console.log(b); // undefined
let a = 1;
var b = 1;

 

프로그램 최상위에서 선언할 경우 var는 전역 객체에 속성을 추가하지만 let, const는 추가하지 않는다.

var a = 1;
let b = 2;
console.log(this.a); // 1
console.log(this.b); // undefined
반응형