let & const

let 선언은 블록 유효 범위를 갖는 지역 변수를 선언하는 점에서 var 선언과 차이점이 있습니다. const 선언은 값에 읽기 전용 참조를 생성합니다. 담긴 값이 불변 임을 뜻하는 게 아닙니다. 단지 그 변수 식별자는 다른 데이터로 재 할당 될 수 없습니다.

영상 강의

PART 1

PART 2

codepen



예제

기존의 var에 더해 letconst라는 값을 저장하기 위한 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을 사용하면 예상치 못한 동작을 할 수도 있습니다.

주의!

letconst는 블록 스코프 식별자입니다. 따라서, 블록 스코프 식별자로 정의하기 전에 참조하게 되면 참조 오류(ReferenceError)를 발생시킵니다.

console.log(x);
let x = 'hi'; // ReferenceError: x is not defined

권장

레거시 코드의 var 선언은 변경하지 않고, 새로운 프로젝트를 수행할 경우 변수는 let을, 상수는 const를 사용합니다.

참고