호이스팅
: (변수, 함수) 선언부가 코드 최상단으로 이동해 실행되는 것처럼 동작하는 자바스크립트의 독특한 동작 방식으로,
자바스크립트 엔진이 코드를 해석하고 실행하기 전(런타임 이전)에 선언된 변수와 함수를 미리 메모리에 할당하는 과정을 말합니다.
호이스팅에는 크게 두 가지 방식이 존재하는데요,
- 변수 호이스팅
- 함수 호이스팅
변수 호이스팅
- var 키워드로 선언된 변수의 경우 호이스팅에 의해 undefined로 초기화되므로, 선언문 이전 undefined 참조가 가능합니다.
- let, const 키워드로 선언한 변수도 엄밀히는 호이스팅이 일어나지만, 변수 선언 전에 해당 변수를 참조하려 했을 때, 참조에러가 발생합니다.
함수 호이스팅
- function 키워드의 함수선언문으로 선언한 함수는 호이스팅에 의해 코드 어디서든 호출이 가능합니다.
- 함수표현식으로 선언된 함수는 변수 호이스팅 방식을 따릅니다.
반면 함수표현식으로 변수에 할당한 함수는 선언문 이전에 호출이 불가. ( by TDZ )
console.log(square(5)); // ReferenceError: Cannot access 'square' before initialization
const square = function (n) {
return n * n;
};
Reference
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#function_hoisting
'Javascript' 카테고리의 다른 글
프로세스&스레드 , 이벤트루프 (0) | 2023.12.10 |
---|---|
일급함수와 클로저(Closure) (0) | 2023.12.10 |
실행 컨텍스트와 렉시컬 환경 (0) | 2023.12.10 |