자바스크립트에서 기명 함수와 익명 함수는 둘 다 함수를 정의하는 방식에 해당한다.
: 기명 함수는 함수 선언 시 이름을 지정하는 함수이다. 이 이름을 사용하여 함수 내부나 외부에서 함수 호출이 가능하다.
function sayHello() {
console.log("Hello, World!");
}
SayHello(); // "Hello, World!" 출력
function calculateSum(a, b) {
return a + b;
}
let result = calculateSum(3, 5);
console.log(result); // 8 출력
위 코드에서 calculateSum 함수는 이름만 보고도 두 숫자의 합을 계산하는 함수임을 알 수 있다. 이와 같이 함수 이름이 명확하게 정의되면 코드의 가독성이 향상된다.
function factorial(n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
let result = factorial(5);
console.log(result); // 120 출력
위 코드에서 factorial 함수는 자신을 반복적으로 호출하여 팩토리얼 값을 계산한다. 함수 내부에서 자기 자신을 호출할 때 함수 이름을 사용한다.
자바스크립트에서 함수 선언은 호이스팅의 영향을 받기 때문에, 함수 선언 전에 함수를 호출할 수 있다. 즉, 코드의 맨 위로 함수 선언이 끌어올려진 것처럼 동작한다.
console.log(greet()); // "Hello, World!" 출력
function greet() {
return "Hello, World!";
}
위 코드에서 greet 함수는 함수 선언 후에 정의되어 있지만, 그 전에 호출이 가능하다. 이는 자바스크립트의 호이스팅 때문이다. 함수 선언이 스코프의 맨 위로 끌어올려지기 때문에 함수 호출이 정상적으로 동작한다.
익명 함수는 이름이 없는 함수로, 주로 변수에 할당되거나 다른 함수의 인수로 전달될 때 사용된다.
// 변수 sayHello에 익명 함수 할당됨
const sayHello = function() {
console.log("Hello, World!");
};
sayHello(); // "Hello, World!" 출력
익명 함수는 콜백 함수로 주로 사용된다. 콜백 함수란 다른 함수에 인수로 전달되어, 특정 작업이 끝난 후 호출되는 함수를 의미한다.
setTimeout(function() {
console.log("This message is shown after 2 seconds");
}, 2000);
위 코드에서 익명 함수는 setTimeout 한수의 인수로 전달되어, 2초 후에 호출된다.