let, const, var의 차이는?

도디·2020년 8월 17일
2

let과 const는 es6부터 생겨났다. 이전까지는 var로만 사용되었다는건데, var에는 몇가지 문제가 있었다.

var이 가진 문제, (함수 스코프, 호이스팅)

함수 스코프 문제

스코프란 변수가 사용 될 수 있는 영역을 말하는데, var은 함수스코프이기 때문에 벗어난 영역에서 사용하면 에러가 발생한다.
그러나, for문, while문, switch문 if문 등 함수 내부에서 작성되는 코드의 경우 반복문이 끝나도 var는 계속 남게 된다.

호이스팅 문제

호이스팅은 변수가 속한 스코프의 최 상단으로 끌어올리는 것인데,
아래에서 선언된 변수가 더 위의 코드에서 사용되었을때 오류가 나지 않고 undefined가 나는 문제이다.
에러가 없다는건 직관적이지 않으며, 있을 필요가 없는 기능이다.

이 문제들을 해결하기 위해
ES6에서 const와 let이 등장했다.

업그레이드 된 Const, let?

  • 함수스코프가 아닌 블록 스코프이다. 반복문이 벗어나도 해당 변수는 신경쓰지 않아도 된다.
  • 호이스팅이 된다. 다만, 변수 정의 전 사용하면 에러가 난다.
  • const는 재할당이 불가능하고 let은 재할당이 가능하다.
  • const 재할당이 불가능해도, 내부 속성값은 수정이 가능하다.
    이를 수정하지 않고, 새로운 객체를 생성하기 위해서 Immer나 immutable을 사용한다.
profile
충전중..🤔

0개의 댓글