변수 선언 방식 var: function-scoped, 재선언 가능, hosting으로 인해 선언 전에 변수 호출 가능 let: 재할당 가능 const: 재할당 불가능 undeclared, undefined, null의 차이 undeclared: 선언되지 않은 변수에 할당 시도 undefined: 선언은 되었지만 할당되지 않음 null: null 값이 명시적으로 할당 렉시컬 스코핑과 클로저 렉시컬 스코핑: 스코프는 함수를 호출할 때가 아니라 함수를 어디에 선언하였는지에 따라 결정된다. 클로저: 자신을 포함하고 있는 외부함수보다 내부함수가 더 오래 유지되는 경우, 외부함수 밖에서 호출되더라도 외부함수의 지역변수에 접근할 수 있는 것 => 자신이 생성될 때의 환경(Lexical Environment)을 기억..