ES6 에서 변수 선언 let

DevHwanㅤ

·

2018. 6. 20. 13:49

기존에 사용하던 var는 선언문의 생략 또는 중복된 변수명으로 선언이 가능하고 함수를 끌어올리는 것 등 가독성이 떨어졌다.

const ,let은 이런 점을 보완했다.


var는  함수 블록에서 스코프가 설정된다. 그 외 블록에서는 스코프가 설정되지 않는다.

* 스코프는 변수 또는 함수의 접근 가능한 범위를 의미한다.


1. var의 스코프 설정


1
2
3
4
5
6
var a = 300;
function f(){
    var a = 600;
    console.log(a); // 여기서 a 의 값은 600
}
console.log(a) // 여기서 a의 값은 300
cs

위의 예제를 보면 같은 변수 a 를 선언하고 있는데 

함수 안에서 와 밖은 다른 스코프가 설정이 되어 값이 다른 걸 확인 할 수 있습니다.



2. var 블록에서 스코프


1
2
3
4
5
6
var b = 300;
if(a > 0){
  var a = 600;
  console.log(a); // 여기서 a 의 값은 600
}
console.log(a) // 여기서 a의 값은 600
 cs


함수를 블록으로 바꿔 보았는데 블록 안쪽에서 스코프가 설정되지 않았다. 밖 변수의 값이 600이 나온다. var는 함수 이외 블록에서 변수가 공유되어진다.


3. let은 블록 안쪽에서도 스코프 설정이 된다.


1
2
3
4
5
6
let b = 300;
if(a > 0){
     let b = 600;
     console.log(a); // 여기서 a 의 값은 600
}
console.log(a) // 여기서 a의 값은 300
cs


위 예제를 보면 var와 는 달리 let은 블록에서도 스코프 설정이 되는 걸 볼 수 있다. 



이외에도 var는 반복문 안에서 변수가 공유되었는데 

let으로 개선하였다. 그리고 같은 스코프 내에서 변수 중복 선언을 하면 신텍스 에러가 난다.


1
2
3
4
function Test(){
    let a = 10;
    let a = 20// syntaxerror 발생
}
cs


위 예제를 보면 var 스코프 안에서 변수 중복 선언 시 이전에 선언된 변수가 덮혀 지는데 , let은 중복 선언을 허용하지 않는다.이외

에도 함수 끌어올림이 되지 않는다.



반응형

'JavaScript > Es6' 카테고리의 다른 글

[ES6] Module  (0) 2018.10.04
[ES6] Promise  (0) 2018.10.03
[ES6] For of 문 이터러블 규약  (0) 2018.09.02