我如何只调用一个函数一次,任何进一步的调用返回第一次调用的最后一个值?
How would I invoke a function only once, with any further invocations returning the last value from the first invocation?
我对下面代码的目标是让传递给 fn 的任何函数只被调用一次。例如结果 returns 5 和下面的重复调用也应该 return 相同的数字。我现在拥有的是 returning 一个新号码而不是同一个号码。
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);
要获得相同的值,您可以存储该值并return它用于每次调用。
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
我对下面代码的目标是让传递给 fn 的任何函数只被调用一次。例如结果 returns 5 和下面的重复调用也应该 return 相同的数字。我现在拥有的是 returning 一个新号码而不是同一个号码。
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);
要获得相同的值,您可以存储该值并return它用于每次调用。
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