Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对于带有闭包的循环保存状态_Javascript_Node.js_For Loop_Closures - Fatal编程技术网

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时,它将立即跳出循环。如果要返回所有值,必须将它们放入容器中并返回容器。

a
return
在函数外部?我想知道这怎么不是语法错误。相关问题-
(function(e){
    console.log(e)
})(i);