-
호이스팅(Hoisting)JavaScript 2021. 3. 28. 01:18
호이스팅이란?
console.log(x); // undefined var x;
이 코드에서 1번째 줄은 아직 변수가 선언되지 않았기 때문에 오류가 발생할 것 같지만, 실제로는 undefined가 출력된다.
변수 선언이 프로그램 첫머리 또는 함수의 첫머리로 끌어올려지기 때문이다.
이를 변수 선언 끌어올림, 즉 호이스팅이라고 한다.
console.log(x); // undefined var x = 127; console.log(x); // 127
단, 위처럼 선언과 동시에 대입하는 코드(var x = 127)에서 대입부(x = 127)는 끌어올리지 않는다.
함수 선언도 끌어올려진다!
test(127); // 127 function test(x) { console.log(x); }
위 코드처럼 함수 호출문이 함수 선언문보다 앞에 위치해도 호출할 수 있다.
하지만 함수 리터럴, Function 생성자, 화살표 함수 표현식으로 정의한 함수는 변수에 그 함수의 참조를 할당해야 비로소 사용할 수 있는 상태가 된다.
따라서 함수 정의문이 함수 호출문보다 앞에 위치해야 한다.
'JavaScript' 카테고리의 다른 글
[JavaScript] 배열의 요소를 객체의 key로 사용하는 방법. (0) 2020.07.15 [JavaScript] 배열 중복 요소 제거하는 방법. (0) 2020.04.02 document.querySelectorAll()과 map (0) 2020.02.10 Guard and Default Operators (0) 2020.01.04