목차
- 끌어올리기란?
- 변수 선언에서의 끌어올리기 개념
- 함수 끌어올리기
#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 |
댓글