垃圾收集 - 在Javascript中,即使不使用变量,也会通过闭包捕获变量

garbage collection - In Javascript does the variable is captured by closure even if it is not used?

本文关键字:变量 闭包 Javascript      更新时间:2023-09-26

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

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

据我了解,在这个例子中,当没有引用时,将收集一个变量name,因此它将在闭包myFunc生存期间存在。但是unusedVariable会活下去吗myFunc活着呢?换句话说,displayName() 是否"捕获"此unusedVariable即使它未使用?

是的。在"makeFunc"范围内创建的所有变量都将存在于闭包中,无论是否使用。准确地说,这就是关闭的含义。在"displayName"中,您"可以"(不是"必须")引用这两个变量。