d24254fffc
This reverts commit 536c8d9197.
54 lines
2.1 KiB
Markdown
54 lines
2.1 KiB
Markdown
---
|
|
id: "고차 함수(Higher-Order Function) 20260407"
|
|
created: "2026-04-07 15:55"
|
|
tags:
|
|
aliases:
|
|
---
|
|
## 💡 생각
|
|
이곳에 하나의 생각 또는 아이디어를 작성합니다.
|
|
|
|
---
|
|
## 📑 개념
|
|
함수를 다루는 함수라고 생각하면 쉬워요.
|
|
함수가 다음 중 **하나 이상**을 수행한다면 고차 함수라고 부릅니다.
|
|
|
|
## 고차 함수의 두 가지 조건
|
|
|
|
### 1. 함수를 인자로 전달받음
|
|
|
|
다른 함수를 매개변수(Parameter)로 넘겨받아 실행하는 경우입니다. 이때 인자로 전달되는 함수를 보통 **콜백 함수(Callback Function)** 라고 부릅니다.
|
|
|
|
- **예시:** `Array.prototype.map()`, `filter()`, `forEach()` 등
|
|
``` javascript
|
|
const numbers = [1, 2, 3];
|
|
// 여기서 map은 고차 함수이고, (n => n * 2)는 콜백 함수입니다.
|
|
const doubled = numbers.map(n => n * 2);
|
|
```
|
|
|
|
|
|
### 2. 함수를 결과로 반환함
|
|
|
|
함수 실행의 결과물로 새로운 함수를 만들어 내보내는 경우입니다. 이 방식은 **클로저(Closure)** 나 **커링(Currying)** 기법을 구현할 때 자주 쓰입니다.
|
|
|
|
- **예시:**
|
|
``` javascript
|
|
function makeMultiplier(multiplier) {
|
|
// 함수 자체를 반환합니다.
|
|
return function(value) {
|
|
return value * multiplier;
|
|
};
|
|
}
|
|
const triple = makeMultiplier(3);
|
|
console.log(triple(10)); // 30
|
|
```
|
|
|
|
---
|
|
## 왜 고차 함수를 쓰나요?
|
|
|
|
고차 함수를 사용하면 코드의 **추상화 수준**을 높일 수 있습니다.
|
|
|
|
1. **코드의 재사용성:** 복잡한 로직(반복문, 조건문 등)은 고차 함수 내부에 숨기고, 실제 수행할 구체적인 작업만 함수로 갈아 끼울 수 있습니다.
|
|
|
|
2. **가독성 향상:** `for` 문을 돌리며 배열을 수정하는 대신, `filter`나 `map` 같은 명칭을 사용함으로써 코드가 무엇을 하려는지 의도를 명확히 드러낼 수 있습니다.
|
|
|
|
3. **함수형 프로그래밍:** 데이터를 직접 변경하지 않고 새로운 데이터를 생성하는 방식(불변성 유지)을 구현하기에 최적입니다. |