闭包函数是连接函数内部和外部的桥梁。闭包可以让你从内部函数访问外部函数作用域。在JavaScript,函数在每次创建时生成闭包。
var listItems = document.getElementsByTagName('li');
//通过为 dom 对象添加自定义属性 idx 来记录索引值
for(var i = 0, len = listItems.length; i < len; i++) {
listItems[i].idx = i;
listItems[i].onclick = function() {
console.log(this.idx)
};
}
// 通过闭包函数记录索引值
for(var i = 0, len = listItems.length; i < len; i++) {
listItems[i].onclick = (function(idx) {
return function() {
console.log(idx)
};
})(i)
}