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

JavaScript关于返回函数数组的值的问题

JavaScript关于返回函数数组的值的问题

开满天机 2018-11-22 13:14:12
在学习js的闭包问题的时候,js高级程序设计上的代码例子,我敲了实验了下结果并不相符,想不明白。function createFunction(){    var result = new Array();    for (var i = 0; i < 10; i++) {        result[i] = function(){        // console.log(i);            return i;        };    }    return result;}这个代码结果应该返回的是一个数组,每个值都是10,可是在浏览器中实验后,我发现返回的是一个函数数组。求解为什么不是返回一个数值数组?
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

是一个函数数组,每个函数虽然都有返回值 i ,不过这个函数并没有执行。
你仔细看书的 181 页,代码下面第一句话。

这个函数会返回一个函数数组。

之前我看到这儿的时候也有一点疑惑,感觉应该直接全部返回 10 才更直观。后来想了想,如果直接在返回的函数后面加()执行的话,就相当于每次都创建一个立即执行函数,返回的 i 就是每次正常的索引值,起不到该有的效果。

function createFunction(){

    var result = new Array();

    for (var i = 0; i < 10; i++) {

        result[i] = function(){

            return i;

        }();

    }

    return result;

}

createFunction()    //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


查看完整回答
反对 回复 2018-12-10
  • 1 回答
  • 0 关注
  • 2615 浏览
慕课专栏
更多

添加回答

举报

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