为了账号安全,请及时绑定邮箱和手机立即绑定

关于闭包的那个程序没读懂,希望大神帮忙解读

关于闭包的那个程序没读懂,希望大神帮忙解读

我是匿名 2017-07-12 17:42:27
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每循环一次匿名函数执行一次  并将执行结果赋值给数组

查看完整回答
1 反对 回复 2017-07-12
  • 3 回答
  • 0 关注
  • 1592 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信