iife javascript变量生命周期

时间:2016-08-12 23:12:22

标签: javascript scope 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;
    }
})();

2 个答案:

答案 0 :(得分:1)

它存活下来,因为在你的一个HTMLElements中仍然有对它的引用。

将lambda附加到// Assuming that the rule you want is the first rule of the first stylesheet of the page document.styleSheets[0].cssRules[0].style.backgroundColor = 'blue'; 属性时,lambda中会引用button.onclick

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

答案 1 :(得分:1)

这被称为“封闭”。

你的函数在它的身体中引用displaycount,所以它会“捕获”那些变量并“保持它们活着”,只要它本身是活着的(它会在这里,因为你将它作为事件处理程序附加到DOM。