说一下闭包
我在网上搜过不少关于闭包的具体定义,给大家总结一下我的理解,先举三个简单的例子,都作用到了闭包,可以先看一下他们的区别:
// 例子1:
var a;
function b(){
var i = 0
a = function(){
alert(i);
}
}; // 例子2:
function funA(){
var m = 10;
return function(){
alert(m);
}
}; // 例子3:
var lis = document.getElementsByTagName("li");
for(var i=0;i<lis.length;i++){
(function(i){
lis[i].onclick = function(){
console.log(i);
};
})(i);
} 为什么说的这么复杂?怎么理解呢?
- 闭包的初衷,不就在解决 “函数内的变量,在函数外无法访问”的问题嘛!
- 所以,只要你能通过各种手段,让我们可以“在外部函数的同级作用域中,访问到这个内部函数”,借此来实现“在外部函数的同级作用域下,可以访问到外部函数内的变量”的效果。那么,我们也就实现了一个闭包。