consta=10; // 변수에 담을 수 있다.constadd10= a => a +10; // 함수의 인자로 사용될 수 있다.
값으로 다룰 수 있다.
변수에 담을 수 있다.
함수의 인자로 사용될 수 있다.
함수의 결과로 사용될 수 있다.
일급 함수
constf1= () => () =>1; // 함수의 결과값으로 함수를 리턴할 수 있다.console.log(f1()); // () => 1constf2=f1();console.log(f2());
함수가 값으로 다뤄질 수 있다.
조합성과 추상화의 도구
고차 함수
함수를 값으로 다루는 함수
고차 함수는 크게 2가지로 나눌 수 있다.
함수를 인자로 받아서 실행하는 함수
함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴하는 함수)
// 1. 함수를 인자로 받아서 실행하는 함수constapply1= f =>f(1);constadd2= a => a +2;console.log(apply1(add2)); // 3consttimes= (f, n) => {let i =-1;while (++i < n) f(i);}times(console.log,3);times(a =>console.log(a +10),3);
// 2. 함수를 만들어 리턴하는 함수 constaddMaker= a => b => a + b;constadd10=addMaker(10);console.log(add10); // b => a + b;console.log(add10(10)); // 20