闭包 就是有权访问另一个函数作用域中变量的函数
主要作用 延伸了变量的作用范围
点击li输出索引号
<ul class="nav">
<li>巧克力</li>
<li>酸奶</li>
<li>可可豆</li>
<li>沙冰</li>
</ul>
var lis = document.querySelector('.nav').querySelectorAll('li');
// 利用闭包的方式得到当前小li 的索引号
var lis = document.querySelector('.nav').querySelectorAll('li');
// for (var i = 0; i < lis.length; i++) {
// // console.log(i); //每次循环后的索引 0 1 2 3
// lis[i].onclick = function() { //如果直接使用点击事件的话
// console.log(i); //它的i就是全部循环完后的长度 4
// }
// }
for (var i = 0; i < lis.length; i++) {
// 所以要在点击事件前面添加一个立即执行函数,接收前面获取的索引值
// 立即执行函数也成为小闭包因为立即执行函数里面的任何一个函数都可以使用它的i这变量
(function(i) {
lis[i].onclick = function() {
console.log(i);
}
})(i)
}