闭包 Closure()
闭包:指有权访问另一个函数作用域中变量的函数
被访问的变量所在的函数就是一个闭包函数,高阶函数
作用:延伸了变量的作用范围
// fn()是一个闭包,f() 访问了 fn() 里面的 num 变量
function fn() {
var num = 10
return function () {
console.log(num)
}
}
var f = fn()
f()
案例:要好好分析
<ul class="nav">
<li>榴莲</li>
<li>苹果</li>
<li>西瓜</li>
<li>葡萄</li>
</ul>
<script>
var lis = document.querySelector('.nav').querySelectorAll('li')
for (var i = 0; i < lis.length; i++) {
(function (i) {
lis[i].onclick = function () { // 这里的函数访问了 闭包 里的i变量
console.log(i);
}
})(i)
}
这里的立即执行函数就是一个闭包
( )( ) 立即执行函数没有名字
( )( ) 立即执行函数:也被称为小闭包,因为 立即执行函数 里面 任何一个函数 ,都可以访问它里面的 i 变量
( )( ) 立即执行函数是闭包,闭包不一定是立即执行函数