함수 표현식(Function Expression)은 함수를 하나의 변수에 저장하는 방식입니다. 이렇게 저장된 함수는 나중에 변수 이름을 통해 언제든지 호출할 수 있습니다.
일반적인 함수 선언(Function Declaration)과 달리, 함수 표현식은 호이스팅(hoisting)되지 않는다는 중요한 차이점이 있습니다. 따라서 코드에서 함수가 정의되기 이전 위치에서 호출하면 오류가 발생합니다.
JavaScript 함수 표현식의 주요 특징
- 함수를 변수에 할당하여 값처럼 다룰 수 있습니다.
- 변수 이름 뒤에 괄호 ()를 붙여 함수를 실행할 수 있습니다.
- 호이스팅이 적용되지 않아 반드시 정의된 이후에 호출해야 합니다.
다음은 JavaScript에서 함수 표현식을 구현한 예제 코드입니다.
예제 코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.result {
font-size: 18px;
font-weight: 500;
color: rebeccapurple;
}
</style>
</head>
<body>
<h1>Function expression in JavaScript</h1>
<div class="result"></div>
<button class="Btn">CLICK HERE</button>
<h3>Click on the above button to display a function expression</h3>
<script>
let resultEle = document.querySelector(".result");
let a = function () {
return "This is a function expression";
};
document.querySelector(".Btn").addEventListener("click", () => {
resultEle.innerHTML = " a = " + a + "<br>";
resultEle.innerHTML += " a() = " + a() + "<br>";
});
</script>
</body>
</html>실행 결과
위 코드를 실행하면 다음과 같은 화면이 출력됩니다.

'CLICK HERE' 버튼을 클릭하면 아래와 같이 변수 a에 저장된 함수 자체와, a()를 호출했을 때 반환되는 문자열이 함께 표시됩니다.

정리
함수 표현식은 익명 함수를 변수에 담아 필요한 시점에 호출할 수 있는 유연한 방법입니다. 다만 호이스팅이 되지 않는다는 점을 기억하고, 항상 함수를 먼저 정의한 뒤 사용하는 것이 좋습니다.