더북(TheBook)

노트 ES6의 const와 let

const는 ES6 문법에서 새로 도입되었으며 한번 지정하고 나면 변경이 불가능한 상수를 선언할 때 사용하는 키워드입니다. let은 동적인 값을 담을 수 있는 변수를 선언할 때 사용하는 키워드입니다.

ES6 이전에는 값을 담는 데 var 키워드를 사용했는데요. var 키워드는 scope(해당 값을 사용할 수 있는 코드 영역)가 함수 단위입니다.

function myFunction() {
  var a = "hello";
  if(true) { 
    var a = "bye";
    console.log(a); // bye
  }
  console.log(a); // bye
}
myFunction();

 

if 문 바깥에서 var 값을 hello로 선언하고, if 문 내부에서 bye로 설정했습니다. if 문 내부에서 새로 선언했음에도 if 문 밖에서 a를 조회하면 변경된 값이 나타납니다.

이런 결점을 해결해 주는 것이 바로 letconst입니다.

function myFunction() {
  let a = 1;
  if(true) {
     let a = 2; 
     console.log(a); // 2
  }
  console.log(a); // 1
}
myFunction();

 

letconstscope가 함수 단위가 아닌 블록 단위이므로, if 문 내부에서 선언한 a 값은 if 문 밖의 a 값을 변경하지 않습니다.

letconst를 사용할 때 같은 블록 내부에서 중복 선언이 불가능하다는 점에 주의하세요.

let a = 1;
let a = 2; // 오류: Uncaught SyntaxError: Identifier 'a' has already been declared.

 

그리고 const는 한번 선언하면 재설정할 수 없습니다.

const b = 1;
b = 2; // Uncaught TypeError: Assignment to constant variable.

 

그렇다면 어떤 상황에 각 키워드를 사용해야 할까요? 일단 ES6 문법에서 var을 사용할 일은 없습니다. let은 한번 선언한 후 값이 유동적으로 변할 수 있을 때만(예: for 문) 사용하고, const는 한번 설정한 후 변할 일이 없는 값에 사용합니다.

편하게 생각하면 기본적으로 const를 사용하고, 해당 값을 바꾸어야 할 때는 let을 사용하면 되겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.