코드가 계산되어 값을 만드는 것
const a = 10;
const add10 = a => a+10;
const r = add10(a);
log(r);
const add5 = a => a+5;
log(add5);
log(add5(5));
const f1 = () => () => 1;
log(f1());
//결과 : ()=>1
const f2 = f1();
log(f2);
log(f2());
//결과 : ()=>1
//결과 : 1
const apply1 = f => f(1);
const add2 = a=>a+2;
console.log(apply1(add2));
//결과 : 3
console.log(apply1(a => a -1)));
//결과 : 0
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
# 함수를 만들어 리턴하는 함수(클로저를 만들어 리턴하는 함수)
# -addMaker는 클로저를 리턴하는 함수
# b=>a+b함수는 함수이자 a를 계속기억하는 클로저
const addMaker = a => b => a+b;
const add10 = addMaker(10);
log(add10(5));
//결과 : 15
log(add10(10));
//결과 : 20