함수 스코프
var
For 루프에서 변수 선언시 for 루프 밖에서 사용가능하고, 블록 밖에서도 값 변경이 가능하다,
정의 되기 전에 접근이 가능하다. 값에는 접근 불가-> undefined 값을 가지게 된다.
블록 스코프
let
변수가 선언된 블록과 하위 블록 내에서만 사용 가능하다.
정의 전에 접근 불가하다. -> 오류 발생해 디버깅이 쉽다.const
let과 다른 점은 재할당과 다시 선언이 불가하다.
단, 객체가 담겼을 경우 변수 전체를 재할당하는 것이 아니므로 재할당 가능하다.
만약 객체 내용 변경하지 못하게 하고 싶을 경우 ( 객체 내용 고정 )
Object.freeze(객체 이름)
기본적으로 const 를 사용하고 재할당 하는 경우에 let으로 바꾸는 것이 좋다.