【问题标题】:iife javascript variable lifetime [duplicate]iife javascript变量生命周期[重复]
【发布时间】:2016-12-20 00:53:03
【问题描述】:

在 iife 的直接作用域内的变量值如何以与全局变量类似的方式存在于保存其值方面。这真的让我很困惑。

(function(){
    var display = document.getElementById('display');
    var button = document.getElementById('button');
    var count = 0;
    display.innerHTML = 0;

    button.onclick = function(){
        count ++;
        display.innerHTML = count;
    }
})();

【问题讨论】:

  • 它像变量一样存在于任何其他闭包中。

标签: javascript scope iife


【解决方案1】:

它之所以存在,是因为在您的一个 HTMLElement 中仍然存在对它的引用。

当您将该 lambda 附加到 button.onclick 属性时,该 lambda 内有对 count 的引用。

只要该 HTMLElement 存在,或者该 onclick 属性仍然分配给该 lambda,那么 count 也将存在。

【讨论】:

    【解决方案2】:

    这就是所谓的“闭包”。

    您的函数在其主体中引用displaycount,因此只要它本身还活着,它就会“捕获”这些变量并“保持它们活着”(它会在这里因为您将它附加到DOM 作为事件处理程序)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      相关资源
      最近更新 更多