如何在JS中的函数调用之间存储参数

ami*_*der 5 javascript function

一个函数被多次调用,有没有一种方法可以存储上一个函数调用的上下文/参数并与当前函数进行检查。

Cer*_*nce 17

定义函数时,我将使用闭包存储持久变量,并将其重新分配给每次调用传递的参数,例如:

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');
Run Code Online (Sandbox Code Playgroud)

  • 太棒了 (2认同)
  • @KunalMukherjee您还可以分配一个外部变量,但这意味着`lastArgs`失去了其关闭隐私权。另一个选择是分配给函数的属性,例如`function foo(... args){foo.lastArgs = args}`,但是函数*不应*具有这样的非标准属性。到目前为止,IMO的封闭解决方案是最好的,其他都不值得考虑。我猜另一种“奇特”的解决方案是每次调用该函数时都要重新分配它 (2认同)