πΈ18μ₯. ν¨μμ μΌκΈ κ°μ²΄
β
18.1 μΌκΈ κ°μ²΄
μλ°μ€ν¬λ¦½νΈμ ν¨μλ μΌκΈ κ°μ²΄λ€.
// 1. 무λͺ
리ν°λ΄λ‘ μμ±κ°λ₯
// 2. ν¨μλ λ³μμ μ μ₯ κ°λ₯
// -> λ°νμ μμ μ ν¨μ 리ν°λ΄μ΄ νκ°λμ΄ ν¨μ κ°μ²΄κ° μμ±λκ³ λ³μμ ν λΉλλ€.(μ ννλ ν¨μ κ°μ²΄μ μ°Έμ‘°κ°μ΄ ν λΉ λλ€.)
const increase = function (num) {
return ++num;
};
const decrease = function (num) {
return --num;
};
// 2. ν¨μλ κ°μ²΄μ μ μ₯ κ°λ₯
const predicate = { increase, decrease };
// 3. ν¨μλ λ§€κ°λ³μμ μ λ¬ κ°λ₯
// 4. ν¨μλ λ°ν κ°μΌλ‘ μ¬μ© κ°λ₯
function makeCounter(predicate) {
let num = 0;
return function () {
num = predicate(num);
return num;
};
}
// 3. ν¨μλ λ§€κ°λ³μμκ² ν¨μ μ λ¬ κ°λ₯
const increaser = makeCounter(predicate.increase);
console.log(increaser()); // 1
console.log(increaser()); // 2
const decreaser = makeCounter(predicate.decrease);
console.log(decreaser()); // -1
console.log(decreaser()); // -2β
18.2 ν¨μ κ°μ²΄μ νλ‘νΌν°
Last updated