반응형
기명 함수 (Named Function)
- 이름이 있는 함수
- function() 뒤에 이름이 있는 함수 ⇒ function 함수명()
- 함수 선언식은 기본적으로 기명함수
- 디버깅할 때 스택 트레이스에 함수 이름이 찍히고, 함수 내부에서 재귀 호출도 가능해서 오류 찾기와 복잡한 로직 작성에 유리
특징
| 특징 | 설명 |
| 디버깅하기 쉬움 | 에러 스택 트레이스에 함수 이름이 명확히 표시됨 |
| 재귀 호출 가능 | 함수 내부에서 자기 이름으로 자신을 호출할 수 있음 |
| 명확한 의도 표현 가능 | 함수가 무엇을 하는지 이름만 보고 알 수 있음 |
function greet() {
console.log("Hello!");
}익명 함수 (Anonymous Function)
- 이름이 없는 함수,
- function() 뒤에 이름이 없는 함수 ⇒ function()
- 보통 함수 표현식 형태로 사용됨
- 함수 자체에는 이름이 붙어 있지 않고, 변수에 할당되거나 다른 함수의 인자로 바로 사용
- 콜백 함수, 즉시 실행 함수, 일회성 로직 등에 활용됨
- 이름이 없어서 코드가 더 간결하지만 디버깅이 어려울 수 있음
- 단독으로 사용하면 문법 오류, 반드시 표현식 형태로 써야 함
익명 함수의 특징
| 특징 | 설명 |
| 이름 없음 | 디버깅할 때 콘솔에 anonymous로 나올 수 있음 |
| 재귀 호출 불가 | 함수 내부에서 자기 자신을 호출할 수 없음 (이름이 없으니까) |
| 주로 콜백이나 즉시 실행용 | 이벤트 핸들러, map, filter, setTimeout 등에 자주 쓰임 |
| 일회성 사용에 적합 | 한 번만 실행하면 되는 로직에 간결하게 사용 가능 |
// [기본 형태]
// 아래와 같이 단독으로 쓰면 문법 오류, 반드시 표현식 형태로 써야 함
function() {
}익명 함수의 사용
1. 변수에 할당해서 사용
const sayHello = function() {
console.log("Hello!");
};2. 콜백 함수로 사용
/*
setTimeout의 인자로 익명 함수를 전달
딱 이 자리에만 쓰이는 일회성 함수로 자주 사용됨
*/
setTimeout(function() {
console.log("3초 후 실행");
}, 3000);3. 즉시 실행 함수에서 사용
(function() {
console.log("바로 실행됨!");
})();예외 : 이름 있는 함수 표현식
- 함수 표현식이라고 모두 익명함수만 오는 것이 아닌 기명함수도 올 수 있음
/*
함수 표현식이지만 익명 함수는 아님, inner라는 이름이 붙은 기명 함수 표현식임
*/
const test = function inner() {
console.log("안녕");
};
익명함수와 기명함수 비교
| 구분 | 기명 함수 | 익명 함수 |
| 함수 이름 | 함수에 이름이 명확히 있음 | 함수 이름이 없음 |
| 선언 방식 | 함수 선언식 혹은 기명 함수 표현식 | 주로 함수 표현식으로 이름 없이 작성 |
| 재귀 호출 가능 | 가능 (자기 이름으로 함수 내부에서 호출 가능) | 불가능 (이름이 없어서 자기 자신을 참조할 방법 없음) |
| 디버깅 시 이름 | 에러 스택에 함수 이름이 나타나 디버깅 용이 | 익명 함수로 뜰 수 있어서 디버깅이 불편할 수 있음 |
| 호출 방법 | 함수 이름 혹은 변수명으로 호출 가능 | 변수명으로 호출 가능 (변수에 할당한 경우) |
| 예시 | function greet() { ... } const fn = function hello() { ... } | const fn = function() { ... } setTimeout(function() { ... }, 1000) |
반응형
'JS > Javascript' 카테고리의 다른 글
| [javascript] 함수 4 / 함수 내부 동작 이해 (스코프, 호출 순서, 호이스팅, arauments, 기본값 설정(default parameter) (1) | 2025.08.01 |
|---|---|
| [javascript] 재귀 호출 (Recursion) (2) | 2025.07.30 |
| [javascript] 엄격 모드 - use strict (2) | 2025.07.30 |
| [javascript] 함수 3 / 함수의 종류 (일반, 즉시실행, 생성자 제너레이터, 비동기(Async), 콜백(callback) .. 함수) (3) | 2025.07.29 |
| [javascript] 함수 2 / 함수의 선언 방식(함수 선언식, 함수 표현식, 화살표함수, 즉시실행 함수) (1) | 2025.07.29 |