티스토리 뷰
발생일: 2015.05.11
키워드: let
내용:
ES6에 변수를 선언하는 용도로 `let` 키워드가 추가됐다.
자바스크립트의 변수의 스콥은 기본적으로 함수 단위인데,
`let`은 블럭 범위 내에서의 변수를 선언한다.
아래 코드를 보면 `let`의 동작 방식을 이해할 수 있다.
// 블럭 스콥으로 동작한다.
var x = 3;
if (true) {
let x = 5;
console.log(x); //-> 5
}
console.log(x); //-> 3
// for 구문에서 유용하게 사용할 수 있다.
function iter() {
for (let i = 0; i < 3; i++) {
console.log(i);
}
console.log(typeof i); //-> undefined
}
iter(); //-> 1, 2, 3
// 최상위 레벨에서는 var 와 동일하게 동작한다.
var x = 3;
let y = 5;
console.log(this.x); //-> 3
console.log(this.y); //-> 5
// 블럭 내에서 중복으로 정의한 경우, 문법 에러를 발생한다.
(function () {
let x;
let x; //-> Uncaught SyntaxError: Identifier 'x' has already been declared
})();
// let에는 호이스팅(hoisting)이 적용되지 않는다.
// let을 선언한 블럭에서, 선언 전에 변수를 참조하면 레퍼런스 에러를 발생한다.
(function () {
console.log(x); //-> Uncaught ReferenceError: x is not defined
let x;
}());
// let으로 선언한 변수는, `typeof`를 사용해도 마찬가지로 레퍼런스 에러를 발생한다.
(function () {
typeof foo; //-> undefined
typeof bar; //-> undefined
typeof baz; //-> 레퍼런스 에러
var bar;
let baz;
})();
반응형
댓글
공지사항