在Javascript中,即使没有使用变量也会被闭包捕获?

时间:2014-04-07 13:52:56

标签: javascript garbage-collection closures

也许这是一个愚蠢的问题,但我找不到答案。假设我们有这样的代码:

function makeFunc() {
  var name = 'Billy';
  var unusedVariable = 'unused';
  function displayName() {
    alert(name);
  }
  return displayName;
}

var myFunc = makeFunc();

据我所知,在这个例子中,如果没有对它的引用,将收集变量name,因此它将在闭包myFunc存在时生效。但unusedVariable会在myFunc生活时生活吗?换句话说,即使它未使用,displayName()'也会“捕获”此unusedVariable吗?

1 个答案:

答案 0 :(得分:1)

是肯定的。无论是否使用,在“makeFunc”范围内创建的所有变量都将存在于闭包中。确切地说,这就是封闭意味着什么。在“displayName”中,你可以'(不是“必须”)引用这两个变量。