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