JavaScript关于返回函数数组的值的问题
本文介绍了JavaScript关于返回函数数组的值的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在学习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,可是在浏览器中实验后,我发现返回的是一个函数数组。
求解为什么不是返回一个数值数组?
解决方案
是一个函数数组,每个函数虽然都有返回值 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]
这篇关于JavaScript关于返回函数数组的值的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文