μ½λκ° κ³μ°λμ΄ κ°μ λ§λλ κ²
const a = 10; // λ³μμ λ΄μ μ μλ€.
const add10 = a => a + 10; // ν¨μμ μΈμλ‘ μ¬μ©λ μ μλ€.
- κ°μΌλ‘ λ€λ£° μ μλ€.
- λ³μμ λ΄μ μ μλ€.
- ν¨μμ μΈμλ‘ μ¬μ©λ μ μλ€.
- ν¨μμ κ²°κ³Όλ‘ μ¬μ©λ μ μλ€.
const f1 = () => () => 1; // ν¨μμ κ²°κ³Όκ°μΌλ‘ ν¨μλ₯Ό 리ν΄ν μ μλ€.
console.log(f1()); // () => 1
const f2 = f1();
console.log(f2());
- ν¨μκ° κ°μΌλ‘ λ€λ€μ§ μ μλ€.
- μ‘°ν©μ±κ³Ό μΆμνμ λꡬ
- ν¨μλ₯Ό κ°μΌλ‘ λ€λ£¨λ ν¨μ
- κ³ μ°¨ ν¨μλ ν¬κ² 2κ°μ§λ‘ λλ μ μλ€.
- ν¨μλ₯Ό μΈμλ‘ λ°μμ μ€ννλ ν¨μ
- ν¨μλ₯Ό λ§λ€μ΄ 리ν΄νλ ν¨μ (ν΄λ‘μ λ₯Ό λ§λ€μ΄ 리ν΄νλ ν¨μ)
// 1. ν¨μλ₯Ό μΈμλ‘ λ°μμ μ€ννλ ν¨μ
const apply1 = f => f(1);
const add2 = a => a + 2;
console.log(apply1(add2)); // 3
const times = (f, n) => {
let i = -1;
while (++i < n) f(i);
}
times(console.log, 3);
times(a => console.log(a + 10), 3);
// 2. ν¨μλ₯Ό λ§λ€μ΄ 리ν΄νλ ν¨μ
const addMaker = a => b => a + b;
const add10 = addMaker(10);
console.log(add10); // b => a + b;
console.log(add10(10)); // 20