const, let
1. 블록스코프
es2015에 추가된 변수 타입으로 블록스코프를 따른다. (var : 함수 스코프)
if (true) {
var x = 3;
}
console.log(x); // 3
if (true) {
const y = 3;
}
console.log(y); // Uncaught ReferenceError: y is not defined
2. TDZ(Temporal Dead Zone)
- 기존 var는 호이스팅이라고 사용하는 부분이 더 위에있어도 동작했지만, const와 let은 접근이 불가능하다.
(function() { console.log(x); var x = 10; })(); // undefined;
(() => { console.log(z); const z = 10; })(); // Uncaught ReferenceError: z is not defined
- 전역 스코프에 선언하더라도 window에 등록되지 않는다.
var m = 1; console.log(window.m); // 1 const n = 2; console.log(window.n); // undefined
const와 let의 차이
-
이름에서 유추하겠지만, const는 한 번 초기화하면 다른 값을 대입할 수 없다. 단, const에 할당된 객체나 배열의 요소를 바꾸는 것은 막지 않습니다. 즉 데이터의 주소값만 고정하는 겁니다.
const c = [1, 2, 3]; c[0] = 4; c; // [4, 2, 3] const d = {name: 'Zero'}; d.name = 'One'; d; // {name: 'One'}
Comments