let과 var의 차이

Purple·2022년 1월 26일
0

TIL

목록 보기
69/73

let과 const의 차이는 알고있었다. let과 var의 공통점으로는 여러번 할당이 가능한것으로 알고있었다. 그렇다면 차이는 무엇일까?? 🤓

let 과 var의 차이

한문장으로 표현하면 var는 재선언 가능 / let은 재선언 불가능 하다.

  • var는 같은 변수 이름을 여러번 선언할 수 있다.
  • var는 모든 블록 스코프*를 무시하고, 함수 스코프만 따른다. (*모든 블록스코프 중 화살표함수가 만드는 블록스코프는 제외)
  • let은 같은 변수를 선언하려고 하면 에러가 난다.
  • let은 블록 스코프와 함수 스코프를 따른다.(const도 마찬가지)
  • let이 더 최근에 나온 키워드이다. ES6는 var 키워드의 단점을 보완하기 위해 let과 const 키워드를 도입하였다.

더 깊숙하게 알아보자면, let 로 선언된 변수를 선언문 이전에 참조하면 참조 에러(ReferenceError)가 발생한다.

자바스크립트는 ES6에서 모든 선언(var, let, const, function, class)을 호이스팅한다.

  • var 키워드로 선언된 변수는 선언 단계와 초기화 단계가 한번에 이루어진다.
  • let 키워드로 선언된 변수는 선언 단계와 초기화 단계가 분리되어 진행된다.

스코프에 변수를 등록(선언단계)하지만 초기화 단계는 변수 선언문에 도달했을 때 이루어진다. 초기화 이전에 변수에 접근하려고 하니 참조 에러(ReferenceError)가 발생한하는 것이다. let 로 선언된 변수는 스코프의 시작에서 변수의 선언까지 일시적 사각지대(Temporal Dead Zone; TDZ)에 빠지기 때문이다.

**참조문헌 poiemaweb

profile
다시 보면, 더 많은 것들이 보인다.

0개의 댓글