
자바스크립트에서는 데이터 타입에 상관없이 var 선언자로 변수를 선언할 수 있습니다.
var x = 5; // 변수명 x에 5를 저장
var y = 6; // 변수명 y에 6을 저장
var z = x + y; // 변수명 z에 변수 x와 y를 더한 값을 저장, z에는 11 저장됨
console.log(z);
var x = 7; // 변수를 새로 선언하고 변수명 x을 저장
z = x + y; // 변수 z에 변수 x와 변수 y를 더한 값을 저장. 기존에 저장되었던 값은 사라지고 새로운 값으로 바뀌게 됨 z에는 13이 저장됨
console.log(z);
var 선언자를 사용하면 동일한 변수명을 사용해도 에러가 나지 않기 때문에 골치 아프게 매번 새로운 변수명을 만들어서 사용하지 않아도 된다는 장점이 있습니다.
하지만 동일한 변수명으로 변수가 새로 선언되면, 기존 코드에서 동일한 이름으로 사용되던 변수에 할당된 값이 사라지기 때문에 해당 변수를 참조하고 있는 프로그램에서 예기치 못한 에러가 발생할 수 있습니다. 이 문제에 답하여 ES6부터는 let과 const가 추가되었습니다.
let 선언자는 ES6에 새롭게 추가된 선언자입니다. 변수를 선언하고 값을 할당하는 방식은 var과 동일하고, 변수 선언자만 let을 사용합니다.
let으로 변수를 선언하면 동일한 변수명을 갖는 변수를 재선언해서 사용할 수 없습니다.
따라서 let 선언자는 var 선언자와 달리 동일한 변수명으로 재선언되면 에러를 발생시키기 때문에, 코딩 시점에 프로그램 오류를 방지할 수 있다는 장점이 있습니다.
let x = 5; // 변수명 x에 5를 저장
let y = 6; // 변수명 y에 6을 저장
let z = x + y; // 변수명 z에 변수 x와 y를 더한 값을 저장, z에는 11 저장됨
console.log(z);
x = 7; // 변수를 새로 선언하고 변수명 x을 저장
// let x = 7; 에러 발생 동일한 변수명인 x로 재선언 불가능
const 선언자 역시 let 선언자와 함께 ES6에 새롭게 추가된 선언자입니다. const 선언자를 사용할 경우 선언 시점에 값을 할당한 후 같은 변수명으로 재선언뿐만 아니라 이미 선언된 변수의 값도 변경할 수 없습니다. 즉, 선언 시점에 할당한 값을 절대로 변경하지 않는 용도로 사용합니다.
const x = 5; // 변수명 x에 5를 저정
const y = 6; // 변수명 y에 6을 저장
const z = x + y; // 변수명 z에 변수 x와 y를 더한 값을 저장, z에는 11 저장됨
console.log(z);
// x = 7; // 에러발생
// const x = 7; 에러 발생