/*闭包缺陷*/
(
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]());
转载请注明原文地址: https://ju.6miu.com/read-968964.html