通过自执行函数解决,for循环变量泄漏的问题
var arr = [];
var reFn = function (i) {
return function () {
console.log(i)
}
}
for (var i = 0; i < 10; i++) {
// 变量泄露
// arr[i] = function () {
// console.log(i);
// }
// 闭包(外置函数)保存传入的i值
// arr[i] = reFn(i);
// 闭包(自行函数) 保存传入的i值
// arr[i] = (function (i) {
// return function () {
// console.log(i);
// }
// })(i);
// 数组中的元素保存着匿名函数的引用,
//匿名函数保存着对自执行函数内变量的值
(function (i) {
arr[i] = function () {
console.log(i);
}
})(i)
}
// 使用数组里面的函数
arr[6]();
// 使用
var div=document.getElementsByTagName('div');
for (var i = 0; i <div.length; i++) {
!function(i){
div[i].onclick=function () {
return console.log(i)
}
}(i);
};