Javascript 对于带有闭包的循环保存状态
原谅我,如果这可能是一个有点棘手的问题,但这应该是可行的,不是吗Javascript 对于带有闭包的循环保存状态,javascript,node.js,for-loop,closures,Javascript,Node.js,For Loop,Closures,原谅我,如果这可能是一个有点棘手的问题,但这应该是可行的,不是吗 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 我错过了什么?你能详细说明一下吗。因为在这个声明中,你将立即
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
我错过了什么?你能详细说明一下吗。因为在这个声明中,你将立即返回IIFE返回的值
return (function(e){
console.log(e)
})(i);
由于iLife只打印0
,不显式返回任何内容,因此默认情况下JavaScript将返回undefined
,并立即退出。要解决此问题,只需删除return
关键字
(function(e){
console.log(e)
})(i);
PS:您有没有想过,为什么上面代码中的
return
语句有效?仔细想想,它不在函数内部。那么从技术上讲这是一个错误,对吗?;-)我在这里详细解释了这一点。当您调用return时,它将立即跳出循环。如果要返回所有值,必须将它们放入容器中并返回容器。areturn
在函数外部?我想知道这怎么不是语法错误。相关问题-
(function(e){
console.log(e)
})(i);