日期:2014-05-16  浏览次数:20373 次

Javascript闭包与变量的问题


function createFunctions(){
var result = new Array();
for(var i = 0; i < 10; i++){
result[i] = function(){
return i;
}
}
return result;
}
function test1(){
var arr = createFunctions();
alert(arr.toString());
}

/*

书上说,每个函数都返回10的时候我已经很不能理解了。。。(PS:书上没有写test1)
自己试验的时候发现,返回的全是function(){ return i; }


*/


------解决方案--------------------

function createFunctions(){
    var result = new Array();
    for(var i = 0; i < 10; i++){
        result[i] = function(_i){
            return function(){
             return _i;
            };
        }(i);
    }
    return result;
}
function test1(){
    var arr = createFunctions();
    for(var i = 0 ; i < arr.length ; ++i)
     alert((arr[i])());
}
test1();