函數做爲返回值,其實就是用函數生成一個函數。
上代碼之前,我們再來回顧一下函數式編程的核心思想。
函數式編程是把運算過程抽象成函數,在任何地方都可以調用這些函數。
它的意義在於函數可以靈活使用,抽象幫我們屏蔽中間的運算細節,我們只關注最終實現的目標就可以了。
示例-1:
function once(fn) {
let done = false;
return function () {
if (!done) {
done = true;
return fn.apply(this, arguments);
}
};
}
let pay = once(function (money) {
console.log(`支付:${money}元`)
})
pay(5)
pay(5)
pay(5)
pay(5)
我們通過一個once函數,來實現了函數作爲返回值應用,雖然pay方法調用了4次,但它只執行一次。
從代碼上來看,其實我們在實際開發過程中once是被封裝好放到一個公共的類或者方法裏,我們實際用到的只是調用once方法而已,確實不用關心它內部是怎麼寫的。
每天寫寫博客,果然就是超越自己。