본문 바로가기

Dev-/java script, jQuery, Ajax

ES6 let, const 놓치기 쉬운 사실

1. let - 호이스팅이 일어나지 않는 것은 아니다.

변수를 메모리에 할당하고, 선언하는 과정 때문에 마치 호이스팅이 일어나지 않는 것 처럼 보이지만,


block 스코프 내에서 호이스팅이 일어난다.

const a = () => {
console.log(foo); /** --> Uncaught ReferenceError: Cannot access 'foo' before initialization 발생 */
let foo;
console.log(foo);
};

a();


2. const - '객체'변경보호하는 것이 아니다.

const라는 이름 때문에 착각하기 쉽다. 


변수의 재선언이 불가능 한것은 맞지만,

할당되는 값이 객체일 경우, 그 객체의 내용의 변경(프로퍼티의 추가, 변경, 삭제)을 막아주지는 않는다.

const foo = {
name: 'foo-name'
};

foo.name = 'foo-name-update';
foo.name2 = 'new-name';

console.log(foo);