* 호이스팅(Hoisting)
- 자바스크립트 엔진(번역기, Interpreter)이 코드를 실행하기 전, 변수, 함수, 클래스의 선언문을 끌어 올리는 것을 말함
- 변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮김
- 함수의 호이스팅은 함수의 선언문 전에 호출이 가능하게 해줌
- 함수의 선언문은 선언 이전에도 호출이 가능함
- 변수(let, const)와 클래스는 선언만 호이스팅이 되고, 초기화는 안된다.
- 초기화 전, 변수에 접근하면 컴파일(빌드) 에러가 발생한다.
* 호이스팅(Hoisting) 예시 코드
print();
function print() {
console.log('Hello');
}
// 변수(let, const)와 클래스는 선언만 호이스팅이 되고,
// 초기화는 안됨
// 초기화 전, 변수에 접근하면 컴파일(빌드) 에러가 발생
// console.log(hi);
let hi = 'hi';
let func1 = function () {};
// const cat = new Cat();
class Cat {}
let x = 1;
{
console.log(x); // 블럭안에서만 호이스팅이 되어서 x라는 변수가 초기화가 되지 않았다는 오류가 발생이된다.
let x = 2;
}
'Study > JavaScript' 카테고리의 다른 글
[JavaScript_study] 엄격 모드 (strict mode) (0) | 2022.04.14 |
---|---|
[JavaScript_study] var을 쓰지 말자 (0) | 2022.04.14 |
[JavaScript_study] 렉시컬 환경(Lexical Environment) (0) | 2022.04.14 |
[JavaScript_study] 가비지 컬렉션 (garbage collection) (0) | 2022.04.14 |
[JavaScript_study] 스코프(Scope) (0) | 2022.04.14 |