기존 자바스크립트 문법에서는 변수 선언에 var 라는 키워드를 사용했으나 ES6 문법에서는 값을 수정할 수 있는 가변 변수를 위한 let 키워드와 값을 수정할 수 없는 불변 변수를 위한 const 키워드를 사용한다.
1. let
ES6에서 가변 변수는 let 이라는 키워드로 선언한다.
let으로 선언한 변수는 읽거나 수정할 수 있으며, 이 변수를 수정해도 되는 것인지, 또는 수정할 수 있는 것인지 코드만 읽어도 알 수 있다.
let num = 1; num = num*3; // num = 3
let str = '문자'; str = '다른 문자'; // str = '다른 문자'
2. const
const는 불변 변수를 선언할 때 사용된다.
const로 선언한 변수는 읽기만 가능하고 이미 선언한 변수에 값을 다시 할당하게 되면 오류가 발생한다.
const num = 1; num = 3; //Uncaught TypeError: Assignment to constant variable. 에러 발생
다만 불변 변수로 선언된 값은 다시 할당할 수 없지만 배열이나 객체를 불변 변수로 선언한 후 내장 함수 (push, splice, ...)를 이용하여 값을 변경할 수 있다.
const arr = []; arr.push(1); // arr = [1] arr.splice(0, 0, 0); // arr = [0, 1] arr.pop(); // arr = [1]
const obj = {}; obj['name'] = '이름'; // obj = {name:'이름'} Object.assign(obj, {name:'새이름'}); // obj = {name:'새이름'} delete obj.name; // obj = {}
위와 같이 불변 변수로 정의된 배열 또는 객체의 값이 변경되는 것을 '무결성 제약 조건에 위배되었다'라고 한다.