具有闭合功能的 For 循环保存状态
For-loop saving state with closure
请原谅我,如果这可能是一个菜鸟问题,但这应该有效,不是吗?
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
我错过了什么?你能详细说明一下吗?
因为在此语句中立即返回 IIFE 返回的值
return (function(e){
console.log(e)
})(i);
由于 IIFE 只打印0
并且没有显式返回任何内容,因此 JavaScript 将默认返回undefined
并立即退出。要解决此问题,只需删除return
关键字,
(function(e){
console.log(e)
})(i);
PS:你有没有想过,为什么上面代码中的return
语句有效?想想看,它不在函数内部。那么从技术上讲这是一个错误,对吧?;-)我在这个问题中详细解释了这一点。
当你调用 return 时,它会立即脱离循环。如果要返回所有值,则必须将它们放入容器中并返回容器。
相关文章:
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- 双“for”循环(循环)
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- Javascript在for循环中等待处理请求
- For循环在Jquery中只运行一次
- 如何在for循环中使用计数器
- for循环中的JavaScript闭包
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- For循环在调用时未运行
- 如何使用for循环添加所有按钮'单击事件
- 如何更改在for循环中生成的圆的位置
- 为什么这个For循环会使浏览器实验室崩溃
- 为什么我使用javascript获得了一个无限的for循环
- 在for循环中使用多维数组设置google.maps.Marker图标
- 如何在angularJS中运行for循环而不使用html标记