我目前正在完成有关 JavaScript 的阅读。我在http://www.w3schools.com/js/js_function_closures.asp上关于 JavaScript 中的闭包(允许“私有变量”)的章节。
这个例子是一个计数器:
<!DOCTYPE html>
<html>
<body>
<p>Counting with a local variable.</p>
<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>
它声明它使用自调用函数将计数器设置为 0一次,并且每次 add() 迭代时计数器加一。但是,我在代码中看到用于自调用函数的花括号围绕在counter = 0
和递增计数器的函数周围。我很难想象这两个命令到底是如何在自调用函数中出现的,但是一个只运行一次,而另一个在每次迭代时都运行。