[JS] 14장 ,15장 let, const, var 키워드와 블록 레벨 스코프

Jimyu·2023년 10월 29일
0
post-thumbnail

1. var

  • 변수 재할당 가능
  • 중복 선언 가능
  • 함수의 코드 블록만 지역 스코프, 함수 밖에서 선언하면 모두 전역 변수
  • 변수 호이스팅으로 함수 선언과 초기화가 동시에 이루어진다.
  • 전역 객체의 프로퍼티가 된다.(브라우저에서는 window, 서버에서는 global 객체)
    따라서 var 키워드로 선언한 전역 변수의 생명주기는 전역 객체의 생명주기와 일치한다.

2. let

  • 중복 선언 불가능
  • 변수 재할당 가능
  • 블록 레벨 스코프(모든 코드 블록을 지역 스코프로 인정)
  • 변수 호이스팅이 이루어지지 않는 것처럼 동작하지만 호이스팅이 이루어지고 있긴 하다.
    다만 선언과 초기화 단계가 분리되어서 진행되어 그렇게 보이는 것 뿐이다.
    선언은 런타임 전에, 초기화는 변수 선언문 도달 시 이뤄진다.
  • let 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 아니다. let 전역 변수는 개념적인 블록 내에 존재한다.(나중에 23장에서 더 자세히 나올 예정)

일시적 사각지대
선언과 초기화 단계가 분리되기 때문에 일시적으로 변수를 참조할 수 없는 구간이 생기는데, 이를 일시적 사각지대라고 부른다.

3. const

  • 중복 선언 불가능
  • 변수 재할당 불가능
  • 필수적으로 선언과 초기화를 동시에! 해야 한다.
  • 블록 레벨 스코프
  • let과 마찬가지로 변수 호이스팅이 이루어지지 않는 것처럼 동작하지만 호이스팅이 이루어지고 있다.
  • 원시 값을 할당하면 변수 값을 바꿀 수 없지만, 객체를 할당하면 값을 변경 가능하다. 객체는 재할당 없이도 직접 변경이 가능하기 때문이다. 즉, 재할당을 금지할 뿐 불변이라는 뜻은 아니다.
profile
블로그 이전 : https://jimyu-s-record.tistory.com/

0개의 댓글