if (true) {
var functionScopeValue = "global";
let blockScopeValue = "local";
}
console.log(functionScopeValue);
console.log(blockScopeValue);
var
- var 키워드로 정의한 functionScopeValue 변수는 함수 단위의 유효 범위를 가지게 되어 if 문의 블록에서 정의하여도 블록 밖에서도 접근이 가능
- 업데이트 가능하고 재선언 가능
let
- 키워드로 정의한 blockScopeValue 변수는 블록 단위의 유효 범위를 가지게 되어 if문의 블록 밖에서 접근할 경우 ReferenceError가 발생
- 업데이트 가능하고 재선언 불가능
const URL = "http:js,com";
URL = "http://js.com";
if (true) {
const URL2 = "http://js.com";
}
console.log(URL2);
const
- 블록 밖에서 접근할 경우 에러 발생
- 업데이트 불가하고 재선언 불가능
var, let, const 총정리
- var 선언은 전역 범위 또는 함수 범위이며, let과 const는 블록 범위
- var는 범위 내에서 업데이트 및 재선언가능
- let 변수는 업데이트할 수 있지만, 재선언 불가능
- const 변수는 업데이트와 재선언 둘 다 불가능
- 세 가지 모두 최상위로 호이스팅가능
- var 변수만 undefined(정의되지 않음)으로 초기화되고 let과 const 변수는 초기화 불가능
- var와 let은 초기화하지 않은 상태에서 선언할 수 있지만, const는 선언과 동시에 초기화해야한다.