모던 자바스크립트 Deep Dive - 15장

박상은·2021년 9월 29일
0

요약

1. var의 특징

  1. 중복선언이 가능함
  2. 함수스코프를 가짐
  3. 호이스팅에 의해서 선언 이전에 사용해도 오류가 나지 않음
  4. 선언과 동시에 초기화단계가 발생함
  5. 브라우저 환경에서 선언시 window라는 전역객체의 프로퍼티로 생성됨

2. let의 특징

  1. 중복선언 금지
  2. 블록스코프를 가짐
  3. 호이스팅은 일어나지만 선언전에 사용하면 에러발생 ( ReferenceError )
  4. 선언과 초기화단계가 분리되어 진행됨 ( 변수선언문에 도달했을 때 초기화가 일어남 )
  5. 브라우저 환경에서 선언해도 전역객체의 프로퍼티가 아닌 렉시컬 환경에 생성됨

3. const의 특징

  1. let와 동일한 특징을 가짐
  2. 선언과 동시에 초기화
  3. 재할당 금지 ( 불변과는 다름 )

마무리

  • 기본적으로 변수를 선언할 때 어떤 키워드를 사용해야할지 잘모르겠다면 const로 선언후 에러발생시 let으로 변경하는 것이 좋다고 생각함 ( ES6기준 )

  • 일시적 사각지대: 스코프시작지점부터 초기화단계 사이에 존재하는 구간
    여기서 접근시 ReferenceError발생

  • let과 const의 호이스팅

// let의 호이스팅
let v = 10;

function bar(){
  // 만약 let이 호이스팅이 일어나지 않았다면 여기서 에러가 발생하지 않음
  // 하지만 에러가 발생했고 let이 호이스팅이 발생해서 일시적 사각지대에서 변수를 사용해서 에러가 발생한 것임
  console.log(v);	// ReferenceError
  let v = 10;
}

bar();

0개의 댓글