let
, var
, const
는 모두 변수를 선언하는 키워드이다. 우리는 이 셋의 차이점에 주목해야한다.
결론부터 말하자면 이 셋의 차이점은 '재선언과 재할당의 가능여부'이다.
var
var
는 소위 말하는 '꼰대 코드'다.
예전에는 자주 사용되었지만 요즘에는 var
의 사용을 지양해야 한다는 추세이기 때문인데, var
가 재선언과 재할당을 모두 허용하는 키워드이기 때문이다.
var role; // 재할당을 허용하기 때문에 변수만 선언하는 것이 가능하다.
role = 'main vocal';
var role = 'center'; // 재선언까지 허용한다.
분명 var
를 사용해 role
이라는 변수를 선언하고 값을 할당해주기까지 했지만, 다시 role
이라는 변수를 선언해도 에러코드가 뜨지 않는다. var
를 사용해 기존에 있던 변수를 재선언하고, 값을 할당할 경우 기존에 선언된 변수에 저장되었던 데이터 자체가 대체되어버린다.
var
의 사용을 지양해야 하는 이유에 대해 더 자세히 알고 싶다면 JAVASCRIPT.INFO의 오래된 'var' 문서를 확인해보자.
let
let
은 자바스크립트에서 변수 선언에 가장 많이 사용되는 키워드이다.
자바스크립트를 사용하다보면 변수에 저장된 데이터를 바꿔줘야 하는 일이 많이 생기는데, let
은 변수 자체를 재선언하는 것은 허용하지 않지만, 변수에 값을 재할당하는 것은 허용하고 있다. 오류생성을 줄이고 필요한 기능만 남긴 유용한 키워드라고 할 수 있다.
let age; // 재할당을 허용하기 때문에 변수만 선언해 놓는 것이 가능하다.
age = 21;
// let은 재선언을 허용하지 않는다. 재선언을 할 경우 에러가 발생한다.
let age = 22; // SyntaxError: 'age' has already been declared
const
const
키워드는 앞의 두 키워드에 비해 엄격한 기준을 가지고 있다. const
는 재선언과 재할당을 모두 허용하지 않는다. 때문에 절대 바뀌어서는 안되는 값을 저장할 때 const
를 사용해 변수를 선언하고 값을 할당해준다.
const dataId = 00012;
//const는 재할당이 안되기 때문에 반드시 변수선언과 할당이 동시에 이루어져야 한다.
const username; // SyntaxError: Missing initializer in const declaration
자바스크립트에서는 let
의 사용을 권장하고 있다. 하지만 개인적으로 용도에 따라 const
키워드가 더 적합하다고 느껴질 때는 const
를 사용한다. 무조건 let
을 사용하기 보다는 적재적소에 알맞은 키워드를 사용하는 법을 터득하는 것이 중요할 것 같다.