【发布时间】:2019-07-24 06:44:10
【问题描述】:
一个函数被多次调用有没有办法存储最后一次函数调用的上下文/参数并检查当前的。
【问题讨论】:
标签: javascript function
一个函数被多次调用有没有办法存储最后一次函数调用的上下文/参数并检查当前的。
【问题讨论】:
标签: javascript function
在定义函数时,我会使用闭包来存储一个持久变量,重新分配给每次调用时传递的参数,例如:
const fn = (() => {
let lastArgs;
return (...args) => {
console.log('function was called with args:', args);
console.log('past args were:', lastArgs);
lastArgs = args;
};
})();
fn('foo', 'bar');
fn('baz');
【讨论】:
lastArgs 失去了其闭包隐私。另一种选择是分配给函数的属性,例如function foo(...args) { foo.lastArgs = args },但函数不应该具有这样的非标准属性。 IMO 关闭解决方案是迄今为止最好的,其他的不值得考虑。另一个 odd 解决方案是每次调用时都重新分配函数,我猜
undefined(最坏的情况下,它将是一个空数组),你能显示一个minimal reproducible example吗?
您可以使用全局变量来存储数据。每次调用一个新函数时,都会使用全局变量检查新参数并执行您想要的操作。
【讨论】: