【问题标题】:How to store arguments between function calls in JS如何在JS中的函数调用之间存储参数
【发布时间】:2019-07-24 06:44:10
【问题描述】:

一个函数被多次调用有没有办法存储最后一次函数调用的上下文/参数并检查当前的。

【问题讨论】:

标签: javascript function


【解决方案1】:

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

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');

【讨论】:

  • 太棒了
  • 据我所知,在代码战中有一个有趣的挑战。
  • @KunalMukherjee 我不确定是否有比这个更清洁的方法。它足够清晰和灵活,不确定是否值得寻找其他解决方案:P
  • @KunalMukherjee 您也可以分配给外部变量,但这意味着 lastArgs 失去了其闭包隐私。另一种选择是分配给函数的属性,例如function foo(...args) { foo.lastArgs = args },但函数不应该具有这样的非标准属性。 IMO 关闭解决方案是迄今为止最好的,其他的不值得考虑。另一个 odd 解决方案是每次调用时都重新分配函数,我猜
  • @amitavamozumder 听起来您使用的代码与答案中的代码不同 - 参数休息语法将永远undefined(最坏的情况下,它将是一个空数组),你能显示一个minimal reproducible example吗?
【解决方案2】:

您可以使用全局变量来存储数据。每次调用一个新函数时,都会使用全局变量检查新参数并执行您想要的操作。

【讨论】:

  • 这是一种反模式。我们不应该把全球空间弄得乱七八糟。
  • 是的,你是对的,我只是想帮忙。上面的评论是真正的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
相关资源
最近更新 更多