如何在一个生命的直接范围内变量值,在保持它的价值方面以与全局变量类似的方式存活。这真让我感到困惑。
(function(){
var display = document.getElementById('display');
var button = document.getElementById('button');
var count = 0;
display.innerHTML = 0;
button.onclick = function(){
count ++;
display.innerHTML = count;
}
})();
答案 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)
这被称为“封闭”。
你的函数在它的身体中引用display
和count
,所以它会“捕获”那些变量并“保持它们活着”,只要它本身是活着的(它会在这里,因为你将它作为事件处理程序附加到DOM。