1、闭包是指有权访问另一个函数作用域中变量的函数,创建闭包最常见的方法就是在一个函数内创建另一个函数,通过另一个函数来访问这个函数的局部变量。
利用闭包可以突破作用域链,将函数的内部变量和方法传递到外部。
2、闭包的特性:
(1)函数内在嵌套函数;
(2)内部函数可以引用外层的参数和变量;
(3)参数和变量不会被垃圾回收机制回收。
//li节点的onclick事件都能正确的弹出当前被点击的li索引
<ul id="testUL">
<li> index = 0</li>
<li> index = 1</li>
<li> index = 2</li>
<li> index = 3</li>
</ul>
<script type="text/javascript">
var nodes = document.getElementsByTagName("li");
for(i = 0;i<nodes.length;i+= 1){
nodes[i].onclick = function(){
console.log(i+1);//不用闭包的话,值每次都是4
}(i);
}
</script>