LET vs VAR 그리고 CONST (in scope)

Jelkov Ahn·2021년 8월 4일
0
post-thumbnail

(1) let


  • let 으로 블록 스코프 안에서 정의된 변수 i는 블록 범위를 벗어나는 즉시 접근할 수 없습니다. 따라서 결과로는 ReferenceError가 나오게 됩니다.

  • 블록 단위로 스코프를 구분했을때는 훨씬더 예측가능한 let으로 변수 선언을 하는것을 추천합니다.

(2) var


  • var 키워드는 for 문이 만들어낸 블록 스코프를 무시합니다.

  • 그러나, 모든 블록 스코프를 무시하는 건 아닙니다. 화살표 함수의 블록 스코프는 무시하지 않습니다.

  • 결론적으로 var키워드는 함수스코프만 따르지만 화살표함수의 블록스코프도 따릅니다.


  • let 키워드를 var 키워드보다 권장하는 이유

      1. 혼란 발생
        var 키워드로 정의한 변수는 블록 스코프를 무시하고, 함수 스코프만 따릅니다.
        함수 스코프는 함수의 실행부터 종료까지이고, var 선언은 함수 스코프의 최상단에 선언됩니다.
        선언 키워드 없는 선언은 최고 스코프에 선언됩니다.
        함수 내에서 선언 키워드 없는 선언은,
        함수의 실행 전까지 선언되지 않은 것으로 취급합니다.
        코드를 사람들이 작성할때 시각적으로 보기 위해 블록 들여쓰기를 설정하는데,
        var는 이 규칙을 무시하므로 블록 스코프와 함수스코프를 모르는 사람한테는 혼란을 야기합니다.
      1. let 키워드는 재선언을 방지합니다.
        실제로 코딩할 때에 변수를 재선언해야 할 필요가 있을까요? 대부분 이런 경우는 버그입니다.
        (var 키워드는 재선언을 발견하지 못한다.)

(3) const

  • 변하지 않는 값, 곧 상수(constant)를 정의할 때에는 const를 이용합니다.
  • const는 값의 재할당이 불가능합니다. 값을 재할당할 경우 TypeError를 내므로, 의도하지 않는 중복을 막을수 있다.

출처: 코드스테이츠

profile
끝까지 ... 가면 된다.

0개의 댓글