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; }
*/

解决方案 »

  1.   


    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();