【问题标题】:How does this add(x) function work? [duplicate]这个 add(x) 函数是如何工作的? [复制]
【发布时间】:2016-05-10 21:16:42
【问题描述】:
function add (x) {
  return function (y) {
    return x + y;
    };
  }
var add5 = add(5);
var no8 = add5(3);
alert(no8); // Returns 8

谁能解释一下y会发生什么?函数add的第一次调用如何返回5?它会忽略 y 还是什么?

【问题讨论】:

  • 第一次调用返回一个函数。问题之前已经问过了。希望有人能更好地找到骗子。
  • 函数add 接受一个数字x,并返回一个函数,它接受一个参数(指定为y)并将其添加到x。所以var add5 = add(5) 返回一个函数,它的参数会加 5。然后var no8 = add5(3) 使用参数 3 调用该函数。

标签: javascript function scope return closures


【解决方案1】:

这叫做闭包。您应该查看 Kyle Simpson 的“You Don't Know JS - Scope & Closures”,特别是第 5 章。

https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20%26%20closures/ch5.md

【讨论】:

    【解决方案2】:

    称为闭包,即可以通过嵌套函数来维护状态。

    在这种情况下,在第一步中,我们将 5 传递给 add(),然后它保存状态(传递的数字)并返回使用该数字的函数。即使在第一次调用完成后,内部函数也知道该号码。

    您可以在此处阅读更多内容。

    https://developer.mozilla.org/en/docs/Web/JavaScript/Closures

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 2021-03-15
      • 2023-03-25
      • 2020-03-09
      • 2011-03-23
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 2018-07-17
      相关资源
      最近更新 更多