【发布时间】:2015-06-26 13:17:02
【问题描述】:
这很奇怪,我在 javascript 中遇到了简单的嵌套 for 循环问题。
我的代码是这样的:
var a = 0, b = 2048;
var i = 0, l = 2048;
for(; a < b; a++) {
for(; i < l; i++) {
console.log(a, b, i, l);
}
}
所以,虽然我期待这样的输出 (0..2047), 2048, (0..2047), 2048,但我有这样的输出:0, 2048, 0..2047, 2048 其中第一个变量:a 不只是从 0 迭代到 2047。
重新表述这个概念:当内部循环正确迭代时,外部循环仅在索引 0 处执行一次。
我确定这是一个简单而愚蠢的问题,但我无法真正发现..
评论
感谢大家发现这个问题,我怎么看不到这个问题真是不可思议。我接受了 simon 的回答,因为它对我来说似乎更干净、更优雅:
- 他没有像
for(var i = 0;...)那样重新初始化变量,而是将其重置 - 他在 for 语句中而不是在每次迭代后都包含变量 reset
- 他没有声明变量
var a = 0, i = 0然后在每个 for 语句中重置它 - 他使用常规增量
- 他在 sn-p 的开头声明每个变量,而不是在执行的不同时间声明它们
再次感谢!
【问题讨论】:
-
它只是因为当我到达 2048 时,外部循环无法再次执行
标签: javascript node.js loops for-loop