gpt4 book ai didi

javascript - logOnce 高阶函数

转载 作者:行者123 更新时间:2023-12-03 10:34:07 26 4
gpt4 key购买 nike

我想实现一个函数,该函数接受另一个函数作为参数,并返回该函数的新版本,该版本只能调用一次。

第一个功能有效,但第二个功能无效。

为什么第二个函数不起作用,但仍然可以像第一个函数那样在没有函数的情况下访问单词?

var logOnce = once(console.log)    

function once(fn) {
var call = true;
return function(word) {
if(call) {
call = false;
return fn(word);
}
}
}

function once(fn) {
var call = true;
if (call === true) {
call = false;
return fn;
}
}


logOnce("foo"); ----> "foo"
logOnce("blue"); ----> "blue"

最佳答案

您的第二种方法不起作用,因为它返回相同的 fn。其实相当于

function once(fn) {
return fn;
}

因此,once(console.log) 只是 console.log,您可以根据需要多次调用它。

第一种方法有效,因为您返回一个不同函数,该函数将根据变量调用或不调用原始函数。

关于javascript - logOnce 高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29081717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com