【问题标题】:Will JavaScript Closure save all variables in its scope, or only those the closure referred? [duplicate]JavaScript 闭包会保存其范围内的所有变量,还是只保存闭包引用的变量? [复制]
【发布时间】:2017-04-20 03:20:24
【问题描述】:

我们知道

function foo () {
  var x = 10;
  var y = 20;
  function bar () {
    return x + 1;
  }
  bar(); // 11
}

函数bar创建一个闭包,并保存x的引用。

但是变量y 呢?创建的闭包bar 会保留它的引用吗?我在 Chrome 开发工具中尝试过,它在[[Scopes]] 字段中只显示x,没有y。但我找不到任何关于此的文章。

这是否意味着闭包创建只会选择它需要保存的内容?

【问题讨论】:

  • 您是在问根据规范应该发生什么,或者不同的引擎如何实现闭包?
  • 为什么bar 会引用y
  • @nnnnnn:关闭为重复?
  • 请注意,在显示的代码中,在 foo() 之外没有引用 bar(),因此闭包概念并不真正相关。

标签: javascript closures


【解决方案1】:

作用域链接在一起,当找不到引用时,它会检查父作用域。这个问题之前回答过,你可以在这里参考: Scope Chain in Javascript

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    相关资源
    最近更新 更多