let & const
let
선언은 블록 유효 범위를 갖는 지역 변수를 선언하는 점에서 var
선언과 차이점이 있습니다.
const
선언은 값에 읽기 전용 참조를 생성합니다. 담긴 값이 불변 임을 뜻하는 게 아닙니다.
단지 그 변수 식별자는 다른 데이터로 재 할당 될 수 없습니다.
영상 강의
PART 1
PART 2
codepen
예제
기존의 var
에 더해 let
과 const
라는 값을 저장하기 위한 2개의 새로운 키워드가 추가되었습니다. var
와 다르게, let
은 선언 이전에 접근할 수 없습니다.(var
와 달리 선언, 초기화 과정이 동시에 이루어지지 않기 때문).
var
키워드를 사용한 코드 결과
var snack = '허니버터칩';
function getFood(food) {
if (food) {
var snack = '스윙칩';
return snack;
}
return snack;
}
getFood(false); // undefined
let
키워드를 사용한 코드 결과
let snack = '허니버터칩';
function getFood(food) {
if (food) {
let snack = '스윙칩';
return snack;
}
return snack;
}
getFood(false); // '허니버터칩'
이런 변경점으로 인해 var
를 사용했던 레거시 코드를 리팩토링할 때 더욱 조심해야 합니다. 무턱대고 var
대신 let
을 사용하면 예상치 못한 동작을 할 수도 있습니다.
주의!
let
과 const
는 블록 스코프 식별자입니다. 따라서, 블록 스코프 식별자로 정의하기 전에 참조하게 되면 참조 오류(ReferenceError
)를 발생시킵니다.
console.log(x);
let x = 'hi'; // ReferenceError: x is not defined
권장
레거시 코드의 var
선언은 변경하지 않고, 새로운 프로젝트를 수행할 경우 변수는 let
을, 상수는 const
를 사용합니다.