Language/JavaScript

Hoisting 요약

Ethan(기린) 2022. 6. 30. 10:58

Hoisting | 호이스팅

  • 변수, 함수의 선언부가 현재 위치한 인접 스코프 내의 시작 지점에서 해당 식별자의 관측이 가능한 자바스크립트 엔진의 컴파일 전처리 과정 중 일부다.
  • 자바스크립트 코드는 실행(런타임)하기 전에 메모리에 실행할 특정 데이터(선언문)를 저장하는데, 이것은 인터프리터 언어의 단점인 컴파일 속도가 느린 단점을 보완하기 위한 과정으로 자바스크립트에서만 가지고 있는 특징 중 하나에 속한다. 이렇게 데이터가 스코프의 맨 위로 올라가는 만큼 변수의 라이프 사이클, 즉 생성과 초기화, 할당 등에 있어서 동작하는 방식(규칙)이 저마다 다르다.

📋 요약

1. 변수 호이스팅 ( var, let, const )

생성된 식별자는 undefined로 초기화

var

- 선언과 초기화 단계가 한 번에 수행 (시작 지점에서 바로 참조, 할당이 가능)

let / const

- 선언과 초기화 단계가 나뉘어 진행

- 선언부에 도달하기 전 까지 값에 대해 접근 할 수 없음 ( TDZ 동안 참조, 할당 불가능 )

2. 함수 호이스팅 ( = 함수 선언문 )

  • 함수 표현식 ⇒ 함수 호이스팅 X ( 변수 호이스팅 O )
  • 변수 호이스팅 보다 먼저 실행되어 식별자를 생성 (생성된 식별자는 함수 객체로 초기화)
  • 선언과 초기화 단계가 한 번에 수행 (시작 지점에서 바로 참조, 호출이 가능)

참조

[링크] You-Dont-Know-JS/ch1.md at 2nd-ed · getify/You-Dont-Know-JS

 

GitHub - getify/You-Dont-Know-JS: A book series on JavaScript. @YDKJS on twitter.

A book series on JavaScript. @YDKJS on twitter. Contribute to getify/You-Dont-Know-JS development by creating an account on GitHub.

github.com

[링크] 호이스팅에 대한 오해와 진실

 

호이스팅에 대한 오해와 진실

tecoble.techcourse.co.kr