[ES6] var & let & const

wrfg12·2019년 11월 30일
0

ES6

목록 보기
1/2

var

  1. local variable / global variable을 구분하기 위해서 사용
  2. 글로벌 오브젝트에서 작성하면 글로벌 스코프에 들어가서 글로벌 변수가 되는 것
  3. 스코프에 대한 이슈가 발생 (ex: 아무나 우리집에 들어오는 듯한 느낌)
  4. ES5에서 use strict로 해당 문제에 대해 접근하였으나 근본적인 해결책이 되지 않았음.

let

  1. 블록단위 스코프(함수 안에서 작성한 let 변수는 함수가 스코프)
  2. 블록단위이기 때문에 각기 다른 블록에 동일한 변수명으로 각각 값을 설정할 수 있으며 변수 값이 유지됨
  3. let 변수는 hoisting이 되지 않는 것은 아니지만, 변수가 실제 위치한 곳에 도달하기 전까지 액세스할 수 없다.
  4. Temporal Dead Zone(TDZ)

let example

function varTest() {
  var x = 1;
  if (true) {
    var x = 2;  // 상위 블록과 같은 변수!
    console.log(x);  // 2
  }
  console.log(x);  // 2
}

function letTest() {
  let x = 1;
  if (true) {
    let x = 2;  // 상위 블록과 다른 변수
    console.log(x);  // 2
  }
  console.log(x);  // 1
}
// let 변수는 다른 스코프에 대해 다른 값이 유지되는 것을 보여준다.

const

  1. 상수 값 (변하지 않는 값을 선언) - 재할당, 재선언 불가
  2. let과 마찬가지로 블록단위 스코프
  3. let변수와 마찬가지로 TDZ, hoisting에 대한 고려가 필요하다.

const example

// NOTE: 상수 값은 소문자나 대문자 모두 사용가능하지만, 일반적으로 대문자로 작성하는 것이 보통이다.
const MY_FAV = 7;

// this will throw an error - Uncaught TypeError: Assignment to constant variable.
MY_FAV = 20;

// MY_FAV is 7
console.log('my favorite number is: ' + MY_FAV);

0개의 댓글