ES6에서 let/const로 Block-scoped 변수 선언하기
관련 포스트
변수의 Block-scoped 선언
let
let
을 이용해 Block-scoped
인 변수를 선언할 수 있다. 중괄호로 구분된 영역을 Block-scoped
영역이라고 한다. 이는 기존의 var
키워드의 문제점을 해결할 수 있다.
function funcVar() {
console.log(k); // undefined
var k = 1;
console.log(k); // 1
}
funcVar();
function funcLet() {
console.log(a); // ReferenceError: Cannot access 'a' before initialization (오류 발생)
let a = 1;
console.log(a); // 1
}
funcLet();
var
로 선언된 변수 k는 호이스팅에 의해 변수 선언문 이전에도 접근이 가능하며, undefined라는 값을 가진다.
그 이유는 JavaScript에서 var를 사용하면 안되는 이유에서 설명하였으니 패스!
반면에 let
은 var
와 같이 스코프에 진입할 때 변수가 만들어지지만, 코드 위치에 도달할 때까지 액세스가 불가능하게 해놓았다. (호이스팅이 안되는 것은 아니다!) 따라서 ReferenceError: Cannot access 'a' before initialization
과 같은 오류가 뜨는 것이다.
이에 관해 깊이 있게 공부하고 싶다면, 여기를 참고하면 된다.
const
const
는 let
과 대부분 동일하나, 선언과 동시에 값이 할당되어야 한다. 또한 const
이라는 글자 그대로 상수
로서 취급되므로 이후 값의 수정이 불가능하다.
'공부 > JavaScript' 카테고리의 다른 글
JavaScript에서의 this와 this 바인딩 (0) | 2020.06.27 |
---|---|
ES6에서 Arrow Function 사용하기 (0) | 2020.06.26 |
JavaScript에서 var를 사용하면 안되는 이유 (0) | 2020.06.26 |
JavaScript ECMAScript란? (0) | 2020.06.26 |
ES6에서 배열을 활용하는 다양한 방법 (0) | 2020.06.25 |
댓글
이 글 공유하기
다른 글
-
JavaScript에서의 this와 this 바인딩
JavaScript에서의 this와 this 바인딩
2020.06.27 -
ES6에서 Arrow Function 사용하기
ES6에서 Arrow Function 사용하기
2020.06.26 -
JavaScript에서 var를 사용하면 안되는 이유
JavaScript에서 var를 사용하면 안되는 이유
2020.06.26 -
JavaScript ECMAScript란?
JavaScript ECMAScript란?
2020.06.26