function createFunctions() { var result=new Array(); for (var i=0;i<10;i++) { result[i]=function() { return i; }; } return result;}这个result每次返回的值是10 ,function createFunctions() { var result=new Array(); for (var i=0;i<10;i++) { result[i]=function(num) { return function(){ return num; }; }(i); } return result;}这个result为什么返回的是索引值,不懂这两个哪里不同,希望有人解答 , 谢谢
3 回答
阿里斯托亚
TA贡献4条经验 获得超2个赞
函数自己是不会执行的, 除非调用。你第一个例子其实是返回了10个元素全是function(){return i}的数组 就是[function(){return i},function(){return i},function(){return i},function(){return i},function(){return i},function(){return i},function(){return i},function(){return i},function(){return i},function(){return i}] 当你执行数组里的这些匿名函数的时候for已经结束了,i就变成了最后的10 第二个例子是for每循环一次匿名函数执行一次 并将执行结果赋值给数组
添加回答
举报
0/150
提交
取消