일반적인 프로그래밍 언어에서의 함수 선언과 비슷한 형식이다.
함수 선언문은 함수 이름을 생략할 수 없다.function add(x, y) { return x + y }
함수를 다른 변수에 값으로써 '할당'한 것이 곧 함수 표현식이다.
var sub = function (x,y) { return x - y; }
해답은 호출할 수 있는 타이밍이다.
함수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 것은 자바스크립트 고유의 특징 함수 호이스팅⭐ 떄문이다.
호이스팅이란 "끌어올린다" 라는 뜻으로 변수 및 함수 선언문이 스코프 내의 최상단으로 끌어올려지는 현상 을 말한다.
예제
를 통해 알아보자. 호이스팅 떄문에 결과는 다음과 같이 나온다.
console.log(add(2,5)); // 7
console.log(sub(2,5)); // undefined
function add(x,y) {
return x + y
}
var sub = function (x,y) {
return x - y;
}
출처
https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/javascript/hoisting.md
모던 자바스크립트 Deep Dive 책