[JS] var, let, const의 차이점

var
유효 범위: 전역 또는 함수 스코프
- 값 재할당: 가능
- 재선언: 가능 ( => 위험!)
- 전역 레벨(window 객체)로 선언
: 전역에서 참조할 수 있다. (호이스팅에 의해. 접근만 가능. 값을 가져오지는 못함. 값을 가져오는 것은 유효 범위(= 함수 스코프) 안에서.)
var보다 let 키워드를 권장하는 이유
- 블록 단위로 스코프를 구분했을 때,
let이 훨씬 예측 가능한 코드를 작성할 수 있다. (var는 블록 스코프를 무시)
var 키워드는 재선언이 가능해서 위험. (보통 코딩할 때 재선언이 필요한 경우는 없음)
let
유효 범위: 블록 스코프 및 함수 스코프
const
유효 범위: 블록 스코프 및 함수 스코프
const로 선언한 것이 참조형 데이터(배열, 객체...)일 때
- 값을 재할당하는 것은 금지되지만 (주소값을 바꿀 수 X)
- 속성은 추가, 삭제, 값 수정을 할 수 있다.