@@ -0,0 +1,54 @@
|
||||
---
|
||||
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. **함수형 프로그래밍:** 데이터를 직접 변경하지 않고 새로운 데이터를 생성하는 방식(불변성 유지)을 구현하기에 최적입니다.
|
||||
Reference in New Issue
Block a user