var는 어휘적 어휘적 유효 범위(lexical scope)를 따르는 반면, const, let은 블록 유효 범위(block scope)를 따릅니다.
let은 var와 유사하게 재할당이 가능하고, const는 재할당 할 수 없는 변수 선언입니다.
자바스크립트에서는 const를 기본으로 사용하여, 변수의 정보가 변경 가능한 것인이 아닌지를 읽는 사람이 알 수 있도록 하나의 신호를 하는 것이 좋습니다.
상수 할당이 있는 다른 언어에 익숙하다면 const 사용을 추천하는 것이 이상해 보일 수 있겠습니다. 다른 언어에서는 보통 상수 할당이 있는 경우에 모두 대문자로 작성하고, 절대로 변경되지 않는 값이라는 것을 보여주기위해 드물게 사용하기 떄문이죠.
하지만 자바스크립트에서는 변수에 단순히 정보를 선언하는 것을 넘어서 신호를 보내느 것이기에 기본으로 const 사용을 추천합니다. 모든 변수 할당이 변경되지 않는 다는 사실과 변경이 될 수도 있다는 사실을 미리 판단할 수 있다면 양이 많은 코드를 읽을 때 훨씬 편하겠죠?
그래서 const를 기본으로 사용하고 꼭 바뀌는 값이면 다시 let으로 고쳐 주는 방식으로 개발하는 것이 좋습니다.
처음에 자바스크립트를 배우면서 이 방식이 불편하게 느껴질 때도 있겠으나, 꼭 필요한 곳에만 변수를 사용하는 연습을 하면 더 좋은 프로그램을 만들 수 있습니다.
변수 같은 이름 방지
var variable = 'cake';
var variable = 'cookie';
document.write(`<h1>${variable}</h1>`);
var 사용시 같은 이름의 변수를 사용해도 에러가 발생하지 않습니다.
let variable = 'cake';
let variable = 'cookie';
document.write(`<h1>${variable}</h1>`);
let 사용시 같은 이름의 변수를 사용하면 에러가 발생합니다.
Uncaught SyntaxError: Identifier 'variable' has already been declared.
같은 이름의 변수를 선언했다가 문제가 발생할 수 있는데, let을 사용하면 이런 문제점들을 미리 방지할 수 있습니다.