호이스팅
- var 선언문, function 선언문 등 모든 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 특성
- 변수 선언 단계와 초기화 단계가 할당 단계와 분리되어 진행되기 대문에 호이스팅이 발생한다.
변수 호이스팅
- var 키워드 변수 생성과정 -
1. 선언 단계 : 변수 객체에 var 키워드로 선언된 변수를 등록한다. 이 변수 객체는 스코프 참조 대상이 된다.
2. 초기화 단계 : 변수 객체에 등록된 var 키워드 변수를 메모리에 할당한다. var 키워드 변수값은 undefined로 초기화 된다.
3. 할당 단계 : 초기화 단계에서 undefined로 초기화된 값을 실제값으로 할당한다.
var 키워드 변수 호이스팅 예제
// var 키워드로 선언된 변수는 선언 단계와 초기화 단계가 한번에 이루어진다.
// 즉 (1)보다 먼저 scope에 변수가 등록되고
// 변수는 메모리 공간을 확보한 후 undefined로 초기화된다.
// var a; // 호이스팅
console.log(a); // (1) undefined
var a = 10; // (2)
console.log(a) // (3) 10
함수 호이스팅
- 함수 선언문 호이스팅 O
- 함수 표현식 호이스팅 X
// testA : 함수 선언문
// testB : 함수 표현식
testA(2) // 2
testB(4) // testB is not a function
function testA(num) {
console.log(num)
}
var testB = function (num) {
console.log(num)
}
testB(4) // 4
'Javascript' 카테고리의 다른 글
[Javascript] 스코프(Scope) (0) | 2021.07.08 |
---|---|
[Javascript] 프로토타입(Prototype) (0) | 2021.07.07 |
[Javascript] 함수(function) (0) | 2021.06.30 |
[Javascript] 객체와 변경불가성(Immutability) (0) | 2021.06.22 |
[Javascript] 객체 (0) | 2021.06.21 |