<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<p>全局变量计数</p>
<button onclick="myFunction()">计数</button>
<p id="demo">0</p>
<script type="text/javascript">
// 局部变量的做法 错误做法,每一次都是1
// function add(){
// var count = 0;
// return count += 1;
// }
// 闭包里面count是局部变量
/*变量 add 指定了函数自我调用的返回字值。
自我调用函数只执行一次。设置计数器为 0。并返回函数表达式。
add变量可以作为一个函数使用。非常棒的部分是它可以访问函数上一层作用域的计数器。
这个叫作 JavaScript 闭包。它使得函数拥有私有变量变成可能。
计数器受匿名函数的作用域保护,只能通过 add 方法修改。
注意:闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭。*/
var add = (function(){
var count = 0;
return function(){
return count += 1;
}
})();
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>
</body>
</html>