[JS] 일급함수와 고차함수
# 평가와 일급
평가
코드가 계산(Evaluation) 되어 값을 만드는 것
일급
값으로 다룰 수 있다는 것
const a = 10;
- 변수에 담을 수 있다.
const add10 = a => a + 10;
- 함수의 인자로 사용될 수 있다.
const r = add10(a);
- 함수의 결과(리턴 값)로 사용될 수 있다.
log(r); //20
# 일급 함수
자바스크립트에서 함수는 일급이다.
즉, JS 함수는 조합성과 추상화의 도구이다.
- 함수를 값으로 다룰 수 있다.
- 함수의 결과값으로 함수가 사용될 수 있다.
- 함수를 다른 변수에 담을 수 있다.
- 담겨진 함수를 원하는 시점에 평가해 결과를 만들 수 있다.
const add5 = a => a + 5;
log(add5); //a => a + 5
log(add5(5)); //10
const f1 = () => () => 1;
log(f1()); //() => 1
const f2 = f1();
log(f2); //() => 1
log(f2()); //1
# 고차 함수
함수를 값으로 다루는 함수이다.
함수를 값으로 다룬다는 말은 함수를 인자 또는 리턴값으로 다룬다는 의미이다.
1. 함수를 인자로 받아서 실행하는 함수
apply1
const apply1 = f => f(1);
const add2 = a => a + 2;
log(apply1(add2)); //3
log(apply1(a => a - 1)); //0
times
const times = (f, n) => {
let i = -1;
while (++i < n) f(i);
}
times(log, 3); // 0 1 2
times(a => log(a + 10), 3); // 10 11 12
2. 함수를 만들어 리턴하는 함수(클로저를 만들어 리턴하는 함수)
addMaker
:a
를 기억하는 함수인 클로저(b ⇒ a + b
)를 만들어 리턴하는 함수
const addMaker = a => b => a + b;
const add10 = addMaker(10); // -> add10에 b => 10 + b 함수 대입
log(add10(5)); //15
log(add10(10)); //20
Author And Source
이 문제에 관하여([JS] 일급함수와 고차함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@young18/JS-일급함수와-고차함수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)