猿问

javascript中,for循环里匿名函数中的变量的取值是怎样的?

function buildList(list){

       var result=[];

       for(var i=0;i<list.length;i++){

           var item="item"+i;

           result.push(function(){

               alert(item+" "+list[i])

           });

       }

       return result;  //返回一个匿名函数数组

   }

   


function testList(){

       var fnlist=buildList([0,1,2]); //返回一个有三个匿名函数元素的数组

       for(var i=0; i<fnlist.length;i++){  //fnlist数组的长度为3,

           fnlist[i]();              //我觉得此处应该是fnlist[0]():“item0 0”; fnlist[1]():“item1 1”; fnlist[2]():“item2 2”;

       }

   }


   testList();                              //实际结果是"item2 undefined" 3 times

不理解为什么最后弹出的结果是"item2 undefined" 3 times,我把自己的理解写在代码后面了。还请大神帮忙解释下这个代码块的执行情况

RISEBY
浏览 456回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答