/*闭包缺陷*/
( function ($){
var result = new Array (),
i = 0 ;
for (;i< 10 ;i++){
result[i] = function (){
return i;
};
}
$.RES1 = result;
})(jQuery);
// 执行数组中的函数
( function ($){
var result = new Array (),
i = 0 ;
for (;i< 10 ;i++){
result[i] = function (){
return i;
};
}
$.RES1 = result;
})(jQuery);
// 执行数组中的函数
$.RES1[0]();
由于闭包返回的是循环后的变量10,所以为了修复这一缺陷,有了如下代码:
/*修复闭包缺陷*/
(function($){
var result = new Array(),
i = 0;
for(;i<10;i++){
result[i] = function(num){
return function(){
return num;
}
}(i);
}
$.RES2 = result;
})(jQuery);
//调用闭包函数
console.log($.RES2[0]());