[Javascript] 함수선언문 vs 함수표현식

Jin Lee·2022년 1월 25일
0
post-thumbnail

함수선언문 예시

function sayHello() {
	console.log("Hello");
}

함수표현식 예시

let sayHello = function() {
	console.log("Hello");
}

사용할 수 있는 범위에 차이가 있다 -> 함수선언문의 경우 어디서든 호출가능

자바스크립트의 경우 위부터 아래로 실행하는 인터프린터 언어이다.

하지만 함수선언문의 경우 아래와 같이 함수선언부보다 위쪽에서 함수를 호출해도 사용 가능하다 왜일까?

sayHello();

function sayHello() {
	console.log("Hello");
}

이는 자바스크립트의 내부 알고리즘에서 하는 일 때문인데 실행 전 초기화 단계에서 선언된 모든 함수선언문을 찾아서 생성해 둔다. 따라서 함수선언문으로 작성한 경우 함수선언부보다 위에서도 호출이 가능하게 되며 이를 호이스팅(hoisting)이라고 한다.

함수표현식은 코드에 도달한 다음에야 생성되기 때문에 함수표현식의 선언 이후 사용 가능하다.

ref)
1. https://www.youtube.com/watch?v=KF6t61yuPCY

profile
깃허브 : https://github.com/jinlee9270

0개의 댓글