温故前端之从开始到放弃 - 03函数作为返回值

112 阅读1分钟

本文主要目的:函数作为返回值,可以让方法更灵活,更加具有实用性;

案例:模拟支付方法,避免重复点击,函数重复执行,重复支付


function once (fn) {    
    let done = false   // 定义一个标记,如果执行过,就变成True  
    if(!done) {        
        done = true        
        return function () {            
            return fn.apply(this, arguments)        
        }    
    }
}
const pay = once(function (money) {    
    console.log(`您支付了${money} RMB`)
})
pay(5)
pay(5)
pay(5)
pay(5)
pay(5)