JavaScript闭包函数
闭包函数的定义:因为每一个函数都有一个自己的局部作用域,外部是访问不到的,如果在一个内部函数里,对在外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。
举个简单的例子:
function fn() {
var name = "小明";
function fun() {
return name
}
return fun()
}
var name = fn()
console.log(name)
这里在函数 fn内部声明了一个变量 name ,外部是访问不到这个name,然后我们通过在函数内部又创建了一个函数把这个name值给返回出去,最后把这个函数作为返回值给返回出去,这样就形成了闭包。
案例
<ul id="nav">
<li>鸡</li>
<li>鸭</li>
<li>鱼</li>
<li>海鲜</li>
</ul>
// 案例点击li输出对应的索引值
var lis = document.querySelector('#nav').querySelectorAll('li')
for(var i=0;i<lis.length;i++) {
(function(i) {
lis[i].onclick = function() {
console.log(i)
}
})(i)
}