在a函数中定义了b函数,而在b函数里使用了a函数的变量,就会产生闭包,我们说b就是一个闭包.
闭包的作用:可以延长变量的作用域;
一个经典的使用是:
<ul>
<li></li>
<li></li>
<li></li>
</ul>
var lis = document.getElementsByTagname(‘li’);
for(var i =0; i < lis.length; i++){
lis[i].onclick= function(a){
return function(){
console.log(a)
}
}(i);
}
闭包会有一个后果产生:: 就是内存泄漏,因为,当他调用父级的变量时,如果父级也是一个函数,则本来父级执行完 要销毁 的,但是因为他使用了父级的变量,所以导致父级的某个或某些变量无法销毁,造成内存泄漏.