[JavaScript] 함수 선언과 함수 표현식의 차이점

재림·2025년 2월 28일

JS 개념 정리

목록 보기
4/6

함수 선언과 함수 표현식은 JavaScript에서 함수를 정의하는 두 가지 주요 방법이다.

이 둘의 차이점은 주로 호이스팅(hoisting)과 사용 방식에 있다.

함수 선언 (Function Declaration)

  • 형식
function add(a,b){
	return a+b;
 }
  • 호이스팅
  1. 함수 선언은 호이스팅된다. 즉, 함수 선언은 코드의 어느 위치에서든 호출할 수 있다. JS 엔진은 실행 전에 함수 선언을 메모리에 올려놓기 때문이다.
  2. 예를 들어, 함수 선언이 코드의 아래쪽에 있어도 호출할 수 있다
console.log(add(2,3)); //5

function add(a,b){
	return a+b;
}

함수 표현식 (Function Expression)

  • 형식
const add = function(a,b){
	return a+b;
};
  • 호이스팅
  1. 함수 표현식은 변수에 할당되기 때문에, 변수의 호이스팅 규칙을 따른다. 즉, 함수 표현식은 선언 이후에만 호출할 수 있다.
  2. 함수 표현식이 할당되기 전에 호출하면 ReferenceError가 발생한다.
// console.log(add(2,3)); // ReferenceError
const add = function(a,b){
  return a+b;
};

console.log(add(2,3));//5

추가적인 차이점

  • 익명 함수
    함수 표현식은 익명 함수로 정의할 수 있다. 즉, 함수 이름 없이 정의할 수 있으며, 이는 콜백 함수로 자주 사용된다.

  • 즉시 실행 함수 표현식(IIFE)
    함수 표현식은 즉시 실행 함수로 사용할 수 있다.

(function(){
  console.log('즉시 실행');
})();

결론

  • 호이스팅
    함수 선언은 코드의 어느 위치에서든 호출할 수 있지만, 함수 표현식은 선언 이후에만 호출할 수 있다.
  • 사용 목적
    함수 선언은 주로 일반적인 함수 정의에 사용되고, 함수 표현식은 콜백 함수나 즉시 실행 함수 등 다양한 용도로 사용된다.
profile
@jaaerim

0개의 댓글