자바스크립트 함수 표현식 (Function Expressions)

자바스크립트는 함수를 정의하는 여러 가지 방법을 제공합니다. 그 중 하나는 함수 표현식입니다. 함수 표현식은 함수를 변수에 할당하는 것을 의미합니다. 이를 사용하여 익명 함수를 생성하거나 다른 함수의 인자로 전달할 수 있습니다.

함수 표현식의 구문

함수 표현식은 다음과 같은 구문을 갖습니다:


const functionName = function() {
    // 함수의 내용
};

위 구문에서 function()은 익명 함수를 선언하는 부분입니다. 이 함수는 이름이 없으며 functionName과 같은 변수에 할당됩니다.

함수 표현식의 사용 예시

1. 익명 함수

함수 표현식을 사용하여 익명 함수를 생성할 수 있습니다. 익명 함수는 이름이 없는 함수로, 해당 함수를 호출하려면 변수에 할당된 이름을 사용해야 합니다.


const greet = function() {
    console.log("Hello, world!");
};

greet(); // 출력: Hello, world!

위 예시에서 greet 변수에 익명 함수를 할당하고, greet()를 호출하여 결과를 확인할 수 있습니다.

2. 즉시 실행 함수(Immediately Invoked Function Expression, IIFE)

함수 표현식은 결과적으로 함수를 변수에 할당하므로, 이를 활용하여 즉시 실행 함수를 만들 수 있습니다. 즉시 실행 함수는 선언되자마자 즉시 실행되는 함수로, 일회성 작업이나 모듈 패턴 등을 구현할 때 유용합니다.


(function() {
    console.log("I am an immediately invoked function!");
})();

위 예시에서 function() { ... }는 함수 표현식으로 익명 함수를 생성하며, 뒤에 괄호 ()를 붙여 함수를 즉시 실행합니다.

3. 콜백 함수

함수 표현식은 다른 함수의 인자로 전달되어 콜백 함수로 사용될 수도 있습니다. 이를 통해 비동기 작업이나 반복문 등에서 사용자가 정의한 동작을 실행할 수 있습니다.


function processArray(arr, callback) {
    for (let i = 0; i < arr.length; i++) {
        callback(arr[i]);
    }
}

const numbers = [1, 2, 3, 4, 5];

processArray(numbers, function(num) {
    console.log(num * 2);
});

위 예시에서 processArray 함수는 배열과 콜백 함수를 인자로 받아 각 배열 요소에 대해 콜백 함수를 호출합니다. numbers 배열의 요소에 대해 각각 2를 곱한 결과가 출력됩니다.

결론

자바스크립트 함수 표현식은 어플리케이션에서 유연하고 강력한 동작을 구현하는 데 도움을 줍니다. 익명 함수, 즉시 실행 함수, 콜백 함수 등 다양한 상황에서 함수 표현식을 적절히 활용하여 코드를 간결하고 가독성 있게 작성할 수 있습니다.

참고: MDN Web Docs - 함수 표현식