본문 바로가기
JavaScript 이론

1/5 끌어올리기(Hoisting) 개념

by 혀닙 2022. 1. 5.

목차

  1. 끌어올리기란?
  2. 변수 선언에서의 끌어올리기 개념
  3. 함수 끌어올리기

 

#1. 끌어올리기(Hoisting) 란?

  • 모든 선언들을 현재 범위(현재의 스크립트 또는 현재의 함수)의 맨 위로 끌어올리는 자바스크립트의 기본 행동
  • 끌어올리기 개념은 변수 선언과 함수 선언에 적용된다.

 

 

#2. 변수 선언에서의 끌어올리기 개념

1. let과 const 키워드로 정의된 변수는 블록의 맨 처음으로 끌어 올려지기는 하지만, 초기화되지 않는다.

  • 즉, 코드 블록은 변수를 인식하지만  선언되기 전까지는 사용할 수 없는 것.
  • 선언이 되기 이전에 let 변수를 사용하는 것은 참조에러(ReferenceEerror)를 발생시키며,
  • 변수는 선언되기 전까지 코드 블럭의 처음으로부터 일시적 사각지대 (TDZ: Temporal dead zone)에 있게 된다.

 

 

 

2. 자바스크립트 초기화(Initializations)는 끌어올려지지 않는다.

  • 자바스크립트는 오직 선언만을 끌어올리며, 초기화는 끌어올리지 않는다.
  • 따라서, 아무리 var 키워드로 정의된 변수라고 해도 초기화 값을 할당 받지 않았다면,
  • 선언 전 사용 시 undefined 값을 가지게 된다.

 

3. 다르게 말한다면,

  • var로 정의된 변수의 경우,
  • 선언 전에 값 할당을 받았다면,
  • 끌어올리기를 통해,
  • (추후) 선언된 변수에 (기존에) 할당 받은 값을 가지게 되는 것.

 

 

#3. 함수 끌어올리기(Function Hoisting)

  • 자바스크립트 함수는 선언되기 전에 호출될 수 있다.
  • 단, 식을 사용하여 정의된 함수는 끌어올리기 불가

 

'JavaScript 이론' 카테고리의 다른 글

history 인터페이스  (0) 2022.05.02
배열의 반복  (0) 2022.02.09
#1 Promise와 then  (0) 2022.01.28

댓글