재선언O 재할당O 범위 function
변수를 중복으로 선언할 수 있고,
블록 레벨이 아닌 함수 레벨 스코프를 가지고 있습니다.
그리고 변수 호이스팅에 의해 var 키워드로 선언된 변수는 선언과 동시에 undefined로 초기화되어 선언부가 참조되는 위치보다 아래에 있어도 참조할 수 있는 문제점이 있습니다.
재선언X 재할당O 범위{ 블록 레벨 }
var 키워드의 단점을 보완하기 위해 ES6에서 도입된 새로운 키워드
변수 중복 선언 금지
블록 레벨 스코프
를 가집니다.변수 호이스팅이 발생하지 않는 것처럼 동작
한다.호이스팅이란 자바 스크립트 함수가 실행되기 전 함수 내 필요한 변값들을 모아 유효 범위의 최상단에서 선언한 것처럼 동작하는 방식을 말하는데요. var로 선언된 변수는 호이스팅 시 변수 선언만 최상단으로 끌어올려지며, 초기화는 그대로 남아 있어 접근 시 undefined 값을 반환합니다. let과 const 역시 호이스팅되지만 '임시적 사각지대(TDZ)’ 때문에 선언 이전 변수 접근 시도 시 ReferenceError가 발생합니다.
재선언X 재할당X 범위{ 블록 레벨 }
선언과 동시에 초기화 해야한다
한번 초기화 된 값에 재할당 금지
var 또는 let 키워드로 선언한 변수는 재할당이 자유로우나 const 키워드로 선언한 변수는 재할당이 불가능하지만 객체 내부의 속성 변경은 가능