JavaScript Closure会保存其范围内的所有变量,还是仅保存闭包引用的变量?

时间:2017-04-20 03:20:24

标签: javascript closures

我们知道

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

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

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

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

1 个答案:

答案 0 :(得分:0)

范围链接在一起,当找不到引用时,它将与父范围一起检查。此问题之前已经得到解答,您可以在此处参考: Scope Chain in Javascript