본문 바로가기

JavaScript/JavaScript

[JavaScript] 함수 선언식 / 함수 표현식

// 함수 선언식
function printHelloWorld() {
    console.log("Hello World!");
}

printHelloWorld();
// 함수 표현식
let printHelloWorld = function() {
    console.log("Hello World!");
};

printHelloWorld();
  • 함수 선언식은 호이스팅에 영향을 받는다.
  • 함수 표현식은 호이스팅에 영향을 받지 않는다.

함수 선언식은 코드를 구현한 위치와 관계없이 자바스크립트의 특징인 호이스팅에 따라 브라우저가 자바스크립트를 해석 할 때 맨 위로 끌어 올려진다.


// 함수 선언식
printHelloWorld(); // "Hello World!"

function printHelloWorld() {
    console.log("Hello World!");
}
  • 함수 선언식은 호이스팅에 영향을 받기 때문에 선언한 위치보다 먼저 호출을 해도 오류가 나지 않는다.
// 함수 표현식
printHelloWorld(); // Uncaught ReferenceError

let printHelloWorld = function() {
    console.log("Hello World!");
};
  • 함수 표현식은 호이스팅에 영향을 받지 않기 때문에 호출을 먼저 하게 되면 오류가 난다.