gpt4 book ai didi

javascript - 我如何只调用一个函数一次,任何进一步的调用返回第一次调用的最后一个值?

转载 作者:行者123 更新时间:2023-11-30 14:15:31 25 4
gpt4 key购买 nike

我对下面代码的目标是让传递给 fn 的任何函数只被调用一次。例如结果返回 5,下面的重复调用也应该返回相同的数字。我现在所拥有的不断返回一个新号码而不是同一个号码。

function once(fn) {
var done = false;

return function () {
if (!done) {
done = true;
return fn.apply(this, arguments);
} else if (done) {
return fn.apply(this, arguments);
}
};

}

function add(x, y) {
return x + y;
}

var addOnce = once(add);
var result = addOnce(2, 3);
result = addOnce(4, 4);

最佳答案

要获得相同的值,您可以存储该值并在每次调用时返回它。

function once(fn) {
var done = false,
value;

return function() {
if (!done) {
done = true;
value = fn.apply(this, arguments);
}
return value;
};
}

function add(x, y) {
return x + y;
}

var addOnce = once(add);

console.log(addOnce(2, 3)); // 5
console.log(addOnce(4, 4)); // 5

关于javascript - 我如何只调用一个函数一次,任何进一步的调用返回第一次调用的最后一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53628283/

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