반응형
let은 ES6에서 새로 추가된 표준 키워드이며, 그 전까지는 var 키워드로만 변수를 선언할 수 있었습니다.
이제는 블록 유효 범위를 갖는 지역 변수를 let 키워드를 통해 선언할 수 있습니다.
let x = 'a';
if(x === 'a') {
let x = 1;
var y = 2;
let z = 3;
console.log(x); // 1
}
console.log(x); // a
console.log(y); // 2
console.log(z); // ReferenceError: z is not defined
예제를 보면 var 변수는 전역 또는 함수 단위의 범위를 가지게 되어 if문의 블록 밖에서도 접근이 가능합니다.
반면에 let 변수는 선언된 블록 안에서만 유효하기 때문에 블록 밖에서 접근하려니 에러가 발생합니다.
같은 원리로 if 블록 밖의 x 변수와 블록 안에서 동일한 변수명을 가진 x 변수가 서로 다른 값을 가지게 되었습니다.
console.log(a); // undefined
console.log(b); // ReferenceError
var a = 1;
let b = 2;
let은 호이스팅의 적용을 받지 않음을 확인해볼 수 있는 예제입니다.
따라서 변수가 선언되기 전에 참조하면 ReferenceError가 발생합니다.
var로 선언된 변수는 반대로 초기화만 안 되었다고 판정하여 undefined가 뜨게 되지요.
let x = 1;
switch(x) {
case 0:
let y;
break;
case 1:
let y; // Identifier 'y' has already been declared
break;
}
switch문을 사용할 때 블록이 switch 단에서 하나 뿐이면 동일 변수명의 let은 중복 선언 오류를 표시합니다.
let x = 1;
switch(x) {
case 0: {
let y;
break;
}
case 1: {
let y;
break;
}
}
case절 또한 블록으로 감싸면 중복 선언 오류는 발생하지 않게 됩니다.
반응형
'웹프로그래밍 > javascript' 카테고리의 다른 글
javascript 심볼(Symbol) 알아보기 (0) | 2020.01.30 |
---|---|
javascript 객체, 배열 비구조화 할당 (0) | 2020.01.30 |
자바스크립트(javascript) 객체란 무엇인가? (0) | 2020.01.27 |
자바스크립트(javascript) 비교 연산자 (0) | 2020.01.25 |
자바스크립트(javascript) 템플릿 문자열(template strings) 알아보기 (0) | 2020.01.25 |