闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。直观的说就是形成一个不销毁的栈环境。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<p>局部变量计数。</p>
<button type="button" onclick="myFunction()">计数!</button>
<p id="demo">0</p>
<script>
var add = (function () {
var counter = 0;
console.log("======"+counter)
return function () {return counter += 1;}
})();
//返回一个方法
console.log(add)
//返回方法的执行结果
console.log(add())
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>
</body>
</html>
https://www.runoob.com/js/js-function-closures.html