자바스크립트 익명/기명 함수

한태동·2024년 8월 22일

자바스크립트에서 기명 함수와 익명 함수는 둘 다 함수를 정의하는 방식에 해당한다.

기명 함수(Named Function)

: 기명 함수는 함수 선언 시 이름을 지정하는 함수이다. 이 이름을 사용하여 함수 내부나 외부에서 함수 호출이 가능하다.

function sayHello() {
	console.log("Hello, World!");
}

SayHello(); // "Hello, World!" 출력

특징

  1. 함수에 이름이 있기 때문에, 코드가 더 읽기 쉽고 디버깅하기가 용이하다.
function calculateSum(a, b) {
    return a + b;
}

let result = calculateSum(3, 5);
console.log(result); // 8 출력

위 코드에서 calculateSum 함수는 이름만 보고도 두 숫자의 합을 계산하는 함수임을 알 수 있다. 이와 같이 함수 이름이 명확하게 정의되면 코드의 가독성이 향상된다.

  1. 함수 이름은 함수 내부에서도 사용할 수 있어 재귀 호출을 할 때 유용하다.
function factorial(n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

let result = factorial(5);
console.log(result); // 120 출력

위 코드에서 factorial 함수는 자신을 반복적으로 호출하여 팩토리얼 값을 계산한다. 함수 내부에서 자기 자신을 호출할 때 함수 이름을 사용한다.

  1. 함수 선언은 호이스팅(hoisting)의 영향을 받아, 함수 선언 이전에도 함수를 호출할 수 있다.

자바스크립트에서 함수 선언은 호이스팅의 영향을 받기 때문에, 함수 선언 전에 함수를 호출할 수 있다. 즉, 코드의 맨 위로 함수 선언이 끌어올려진 것처럼 동작한다.

console.log(greet()); // "Hello, World!" 출력

function greet() {
    return "Hello, World!";
}

위 코드에서 greet 함수는 함수 선언 후에 정의되어 있지만, 그 전에 호출이 가능하다. 이는 자바스크립트의 호이스팅 때문이다. 함수 선언이 스코프의 맨 위로 끌어올려지기 때문에 함수 호출이 정상적으로 동작한다.

익명 함수(Anonymous Function)

익명 함수는 이름이 없는 함수로, 주로 변수에 할당되거나 다른 함수의 인수로 전달될 때 사용된다.

// 변수 sayHello에 익명 함수 할당됨
const sayHello = function() {
    console.log("Hello, World!");
};

sayHello(); // "Hello, World!" 출력

특징

  1. 함수에 이름이 없기 때문에 코드의 해당 위치에서만 사용된다.
  2. 함수 자체를 변수에 할당하거나 다른 함수의 인자로 전달할 때 주로 사용된다.
  3. 기명 함수와 달리, 익명 함수는 선언된 위치에서만 접근이 가능하다. (호이스팅이 적용되지 않음)
  4. 익명 함수는 주로 일회성 함수나 콜백 함수로 많이 사용된다.

익명 함수 활용 예시: 콜백 함수

익명 함수는 콜백 함수로 주로 사용된다. 콜백 함수란 다른 함수에 인수로 전달되어, 특정 작업이 끝난 후 호출되는 함수를 의미한다.

setTimeout(function() {
    console.log("This message is shown after 2 seconds");
}, 2000);

위 코드에서 익명 함수는 setTimeout 한수의 인수로 전달되어, 2초 후에 호출된다.

결론

  • 기명 함수: 이름이 있는 함수로, 재사용이 가능하며 함수 선언 위치와 상관없이 호출할 수 있다.
  • 익명 함수: 이름이 없는 함수로, 주로 특정 위치에서만 사용되며 콜백 함수나 변수에 할당하는 형태로 많이 사용된다.

0개의 댓글