一、闭包的定义
闭包是指可以访问上一层作用域里变量的函数,即便上一层函数已关闭,闭包是内部函数和外部函数连接了起来
二、闭包的作用
使得函数拥有私有变量变成可能(要用私有变量的时候可以用到闭包);
三、代码解析
要实现每次点击按钮就累加,正常情况下只能调用外部的初始变量,函数累加(①号代码显示),如果初始变量(全局变量)变成局部变量,函数每次累加都是从初始化值开始计算,每次的结果都一样(②号代码显示),要解决这种情况,可以用③号代码(即闭包的使用,使私有变量变为可能)
①号代码显示
<!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 counter = 0;
function add() {
return counter += 1;
}
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>
</body>
</html>
②号代码显示
<script>
function add() {
var counter = 0;
return counter += 1;
}
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>
③号代码显示
<script>
var add = function () {
var counter = 0;
return function () {return counter += 1;}
};
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>
网友评论