程序结构大体如下
for(var i=0;i<10;i++){
  function yibu(){aaa[i]}}
其中的yibu()方法是个异步方法,本来想要逐个用aaa[i]的值,结果取了10遍aaa[9]
各位大侠有没有解决办法

解决方案 »

  1.   

    function yibu(){}
    里面究竟是何内容? aaa[9]执行10遍应该和里面的内容有关吧。
      

  2.   

    for(var i=0;i<10;i++){
      function yibu(){aaa[i]}}
    你把yibu()得到的值可以返回啊 用一个数组  然后循环数组 用每个数组的值
      

  3.   

    for(var i=0;i<10;i++){
    (function(){
    aaa[i];
    })();
    }
    这样写试试~
    for(var i=0;i<10;i++){
      function yibu(){aaa[i]}
    }
    这样yibu()并没有执行的
      

  4.   

    yibu()方法没有立即调用么;是返回到全局给其他引用?看一些匿名函数的作用链吧。for(var i=0;i<10;i++){
    function(num){
    function yibu(){aaa[num];}}(i);
      }
      

  5.   

    程序结构错了吧?
    用for循环重新定义 yibu 这个函数10遍有意义吗?
    更何况这种写法在多个浏览器下是预编译的方式。
    楼主先搞清楚实际结构,更新一下代码吧。
    不然你的问题把大家都误导了,没办法帮你解决实际的问题。
    更大的可能性是你要使用匿名闭包函数吧:var arr = [0,1,2,3,4,5,6,7,8,9];
    var funcs = [];
    for(var i=0;i<10;i++){
        (function(index){
            funcs.push(function(){
                alert(arr[index]);
            });
        })(i);
    }for(var j=0;j<10;j++){
        funcs[j]();
    }