👉 변수 중복 선언 허용
👉 함수 레벨 스코프 (전역 함수 남발 가능성)
👉 변수 호이스팅 (프로그램 흐름상 맞지 않을 뿐더러 가독성을 떨어뜨리고 오류 발생가능성)
👉 변수 중복 선언 금지(const와 동일)
👉 블록 레벨 스코프 (const와 동일)
👉 변수 호이스팅이 발생하지 않는 것처럼 동작. why? "선언 단계" 와 "초기화 단계"가 분리되어 진행되기 때문.
👉 let 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 아님
Temporal Dead Zone이란 일시적 사각지대로 스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간
👉 선언과 초기화 : const 키워드로 선언한 변수는 반드시 선언과 동시에 초기화해야 한다.
👉 재할당 금지.
👉 const 키워드로 선언한 변수에 원시 값을 할당한 경우 변수 값을 변경할 수 없기 때문에 상수를 표현하는데 사용하기도 한다.
👉 const 키워드로 선언된 변수에 객체를 할당한 경우 값을 변경할 수 있다. 객체는 재할당 없이도 직접 값을 변경할 수 있기 때문!
const 키워드는 재할당을 금지할 뿐 "불변"을 의미하지는 않는다.
👉 ES6 사용한다면 var 키워드 쓰지 말 것
👉 재할당이 필요한 경우에 한정해 let 키워드 사용. 변수의 스코프는 최대한 좁게.
👉 변경이발생하지 않고 읽기 전용으로 사용하는 원시 값과 객체에는 const 키워드 사용하기. const 키워드는 재할당을 금지하므로 var, let보다 안전.