• 0
  • 2
January 13, 2025

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

답변 확인

함수 선업식과 함수 표현식은 자바스크립트에서 함수를 정의하는 두 가지 주요 방식으로, 가장 큰 차이점은 호이스팅에 있음

1. 함수 선언식 (Function Declaration)

  • 정의 : 이름이 있는 함수를 정의하는 방식
  • 호이스팅 : 자바스크립트 엔진이 코드를 실행하기 전에 함수 선언을 메모리에 로드하므로,함수 선언식은 코드 내 어디에서든 호출 가능
  • 특징 : - 함수 이름이 고정적 - 코드의 가독성과 유지보수성이 높아지는 장점이 있음
console.log(add(2, 3)); // 5
 
function add(a, b) {
    return a + b;
}

add 함수는 선언된 위치보다 앞에서 호출해도 정상 작동, 함수 선언이 실행 전에 메모리에 로드되기 때문

함수 표현식 (Function Expression)

  • 정의 : 변수를 통해 함수를 정의하며, 변수에 익명 함수를 할당하는 방식
  • 호이스팅 : 변수에 할당된 이후에만 함수 호출이 가능, 변수 자체는 호이스팅되지만 초기화되지 않으므로 ReferenceErrorr가 발생할 수 있음
  • 특징 :
    • 익명 함수로 정희하는 경우가 많음
    • 코드를 작성하는 순서에 따라 실행 흐름이 결정됨
console.log(multiply(2, 3)); // ReferenceError: Cannot access 'multiply' before initialization
 
const multiply = function (a, b) {
    return a * b;
};
 
console.log(multiply(2, 3)); //6

함수 선언식 vs 함수 표현식 비교

구분 함수 선언식 함수 표현식
호이스팅 함수가 코드 실행 전에 메모리에 로드되어 어디서든 호출 가능 변수에 함수가 할당된 이후에만 호출 가능
정의 방식 function 함수이름(매개변수) { 함수 내용 } const 변수이름 = function (매개변수) { 함수 내용 }
사용 용도 코드 구조를 명확히 하고 재사용성이 높은 경우 특정 시점에 실행되거나 익명 함수가 필요한 경우
실행 순서 코드 작성 순서와 관계없이 호출 가능 변 변수에 할당된 이후에만 실행 가능

예시

함수 선언식

// 일반 유틸리티 함수
function calculateArea(width, height) {
    return width * height;
}
 
console.log(calculateArea(5, 4)); // 20

함수 표현식

// 콜백 함수로 사용
const logMessage = function (message) {
    console.log(message);
};
 
setTimeout(() => logMessage('Hello, World!'), 1000);

정리

  1. 함수 선언식 은 코드 실행 전 미리 로드되므로 어디에서든 호출할 수 있으며, 가독성이 높은 구조적 코드에 적합함
  2. 함수 표현식 은 변수가 초기화된 이후에 호출 가능, 특정 실행 시점이나 익명 함수가 필요한 경우 유용함

Top comments (2)

  • DavidYang2월 19일

    우와 댓글이다~

  • Olivia2월 19일

    오오 ~~ :) 너무 글 좋네용