본문 바로가기

programming/javascript

[ES6] 변수 & 상수(let)

let

let 변수는 기존 var의 문제점을 개선했는데,  그 중 하나가 변수의 유효범위, 스코프이다

보통의 언어에서 변수는 중괄호( { } )로 구분되는 블록단위로 유효범위가 정해지는데, 이 범위가 JS는 '함수의 블록' 에서만 유효했다.


ES5 

if(1){

 var a = 5;

}

console.log(a);  //  5


다른언어라면 a가 로그로 찍었을 때 값이 나오지 않는게 맞다. 근데 JS 에서는 if 나 for문에서는 블록을 변수의 유효범위로 보지 않기 때문에 a가 전역변수로 선언되어 if문 밖에서도 값이 찍히게 되는 것이다.


ES6

if(1){

 let a = 5;

}

console.log(a); // 레퍼런스에러가 뜨게 된다.


let키워드는 if든 for든 함수든 코드 블록 ( {...} )밖에서는, 안에서 정의한 변수의 유효범위를 벗어나므로 undefined된 변수가 된다. 그러므로 let 키워드로 변수를 선언하면 전역변수를 자신도 모르게 선언하지는 않을 수 있다.

'programming > javascript' 카테고리의 다른 글

[ES6] 파라미터 핸들링(parameter handling)  (0) 2018.02.06
[ES6] 화살표 함수(Arrow functions)  (0) 2018.02.04
[ES6] 호이스팅(Hoisting)  (0) 2018.02.04
[ES6] 상수 const  (0) 2018.02.04
[ES6] 소개  (0) 2018.02.04