0
点赞
收藏
分享

微信扫一扫

仅执行一次函数

仅执行一次函数的话,使用类似 Lodash 库的 ​​_.once(func)​​ 方法是最简单的。

但如果你不想使用库,想要自己实现一个简单的话,可以利用闭包:

const once = (fn) => {
let result

return function () {
if (fn) {
result = func.apply(this, arguments)
fn = null
}

return result
}
}

let n = 0
const initialize = once(() => ++n)

initialize() // n = 1
initialize() // n = 1
initialize() // n = 1

当您将函数作为参数传递给此 ​​once​​​ 方法(作为参数 ​​fn​​)时,它将返回一个只能调用一次的函数。

简而言之,它通过创建一个 ​​result​​​ 变量并将调用函数的结果与其提供的参数赋值给该变量来完成这一功能,但这只是在函数第一次运行时。在后续调用函数时,它将永远不会执行 ​​if​​​ 语句(因为 ​​fn​​​ 变量在第一次调用时设置为 ​​null​​​),并且将返回 ​​result​​ 变量引用的值(在第一次调用期间设置并通过闭包访问)。

更多资料

​​JavaScript专题之惰性函数​​

举报

相关推荐

0 条评论