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
반응형