请原谅我,如果这可能是一个noobie问题,但这不应该有效吗?
var elems = [1,2,3,4,5]
for (var i = 0; i <elems.length; i++) {
return (function(e){
console.log(e)
})(i);
}
意思是,它应该吐出来
>>node file.js
1
2
3
4
5
出于某种原因,这不是这样做的。而是当它在终端中运行时,它会吐出
>>node file.js
1
我错过了什么?你能详细说明吗。
答案 0 :(得分:7)
因为您在此声明中立即返回IIFE返回的值
return (function(e){
console.log(e)
})(i);
由于IIFE只打印0
并且没有明确返回任何内容,因此JavaScript默认返回undefined
并立即退出。要解决此问题,只需删除return
关键字
(function(e){
console.log(e)
})(i);
PS:你有没有想过为什么上面代码中的return
语句有效?想一想,它不在函数内部。然后技术上是一个错误,对吗? ;-)我在此question中详细解释了这一点。
答案 1 :(得分:2)
当您调用返回时,它将立即突破循环。如果要返回所有值,则必须将它们放入容器中并返回容器。