티스토리 뷰

Daylogs/Javascript

ES6: let

ohgyun 2015. 5. 11. 22:39
발생일: 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;
})();






반응형
댓글
공지사항