闭包:在一个作用域中可以访问另一个作用域的变量
闭包特点:延展了函数的作用域范围
定义:闭包 当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的变量,且返回的这个函数在外部被执行
//练习
// 点击相应的li,输出对应的索引,第一个输出0,第二个输出1,...
var heroes = document.getElementById('heroes');
var lists = heroes.children;
/*
for (var i = 0; i < lists.length; i++) {
var li = lists[i];
li.index = i; // 给li增加index属性,记录索引
// 注册事件监听
li.onclick = function () {
console.log(this.index);
}
}
*/
// 这是我们之前的做法,如果用闭包的做法怎么做呢?(面试常考题)
for (var i = 0; i < lists.length; i++) {
var li = lists[i];
(function (i) {
li.onclick = function () {
console.log(i);
}
})(i);
}
网友评论