知识点:
#闭包的实际应用
闭包可以用来封装数据来保护数据
如
function isFirstLoad(){
var _list = [];
return function(id){
if(_list.indexOf(id) >= 0){
return false;
}
else{
_list.push(id);
return true;
}
}
}
var firstLoad = isFirstLoad();
firstLoad(10) //true
firstLoad(10) //false
firstLoad(20) //true
firstLoad(20) //false
用闭包可以防止存储用的_list被外部得到修改
#例题:创建十个按钮分别绑定点击事件来输出0到9
var i;
for(i = 0; i < 10; i ++){
(function(i){
var a = document.createElement('a');
a.innerHTML = i + '<br>';
a.addEventListener('click',function(e){
e.preventDefault();
alert(i);
})
document.body.appendChild(a);
}
)(i)
}
如果直接在for循环中创建按钮,那么在点击时i已经确定了,点击出来的结果都是一样的9;