js的闭包一直难以理解。下面通过一个案例来简易说明。
使用闭包的一个场景:计数。当点击一次按钮时,计数递增,如果不用闭包来写,那么就要定义一个全局变量。
html
<button onclick="closure()">闭包测试</button>
js
var a=0;
function closure(){
a++;
consol.log(a)
}
那么多次点击,就可以实现a的递增。
然而这样写法有一个弊端,定义的a污染了全局变量,写法不够优雅。如果用闭包来写就可以避免这个问题。
闭包的写法如下。
js
function count() {
var n=0;
function countnum() {
n++;
console.log(n)
}
return countnum;
}
var closure=count()
多次点击时,n就会递增。