我找到了一个javascript示例,我需要一个解释:
<html>
<body>
<button type="button" onclick="myFunction()">Count!</button>
<p id="demo">0</p>
<script>
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>
</body>
</html>
我不明白为什么每次按下按钮时var计数器的值都会增加,而在本教程的其他地方我读到:&#34; JavaScript变量的生命周期在声明时开始。 功能完成后删除局部变量。&#34;
答案 0 :(得分:0)
Javascripts变量范围是函数范围。
这种情况是关闭。
var add = (function () {
var counter = 0;
return function () {
return counter += 1;}
}) ();
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
单击按钮时,您正在调用myFunction,它在内部调用add方法。
add方法在这里是一个IIFE,里面有函数。这种情况已经结束。内部函数可以访问外部函数变量,但反之不然。因此,当调用add方法时,可以跟踪变量'counter'状态。
希望这有帮助