function test(){    var result=new Array();  for(var i=0;i<10;i++){ result[i]=function(){ return i;
};
}
 return result;
}
输出result输出的是10个"function(){
return i;
} "这样的字符串阿,而不是0到9阿,为什么阿,求解释

解决方案 »

  1.   

    function test(){
    var result=new Array(); 
    for(var i=0;i<10;i++){
    result[i]=function(){
    return i;
    }();
    }
    return result;
    }
    var a=test();
    alert(a);
    这样试试
      

  2.   

    function test() {
        var result = new Array();
        for (var i = 0; i < 10; i++) {
            (function(i){
                 result[i] = i
            })(i);
            
        }
        return result
    }
    test()
    alert(test())
      

  3.   

    function test(){    var result=new Array();     for(var i=0;i<10;i++){
            //以下为一个闭包
            result[i]=function(){            return i;
            };
        }
        return result;
    }这是由闭包引起的,楼主去理解一下闭包,每次为result[i]赋值的时候,实际上引用的都是同一个i,而这个i的值在循环结束时,其值为10,所以返回的result中,不管怎么执行,都是输出10
      

  4.   

    result[i]=function(){            return i;
    };
    这是他每次都给数组赋值一个函数所致
    其实楼主就忘记了把赋值的这个函数执行而已 
      

  5.   

    function test(){    var result=new Array();     for(var i=0;i<10;i++){
            //以下为一个闭包
            result[i]=function(){            return i;
            };
        }
        return result;
    }
    var a = test();
    for(var i = 0 ;i<a.length;i++){
        alert(a[i]());
    }= = 楼主不妨运行一下试试,必然都是返回10
      

  6.   

    我开始理解function和闭包了,非常受用,谢谢各位