설명
호이스팅(Hoisting)은 JavaScript에서 변수 및 함수 선언이 해당 스코프의 최상단으로 끌어올려지는 것을 의미한다.
이것은 코드가 실행되기 전에 JavaScript 엔진에 의해 처리된다.
var 변수
변수 호이스팅
변수 선언은 해당 스코프의 최상단으로 끌어올려지지만, 초기화는 끌어올려지지 않는다.
즉, 변수 선언은 호이스팅되지만, 변수에 할당된 값은 호이스팅 되지 않는다.
console.log(i); // undefined
i = 100;
console.log(i); // 100
var i; // 가장 먼저 실행
=> 프로그래밍의 순서의 혼란을 가져오므로 var => let, const를 권장한다.
function을 이용한 선언적 함수
함수 호이스팅
함수 선언이 해당 스코프의 최상단으로 끌어올려지는 것을 의미한다.
함수 선언문은 전체 함수가 스코프 내부 에디에서도 호출될 수 있음을 보장한다.
declare(); // 2번째 선언적 함수입니다.
function declare() {
console.log('1번째 선언적 함수입니다.');
}
function declare() {
console.log('2번째 선언적 함수입니다.');
}
[참고]
익명 함수는 호이스팅이 일어나지 않는다.
anonym(); -> Uncaught TypeError: anonym is not a function
anonym = function() {
console.log('1번째 익명함수입니다.');
}
anonym = function() {
console.log('2번째 익명함수입니다.');
}
'JS' 카테고리의 다른 글
declarative function | anonymous function (0) | 2024.03.11 |
---|---|
var (0) | 2024.03.11 |
global variables | local variables (0) | 2024.03.11 |
timer (0) | 2024.03.11 |
method chaining (0) | 2024.03.11 |