人们可能希望以下内容打印出 a
、b
、c
。
var i, rowName;
for (i = 0; i < 3; i++, rowName = ['a', 'b', 'c'][i]) {
console.log(rowName);
}
相反,它打印出undefined
、b
、c
。为什么?
澄清一下:我知道如何完成这项工作;我很好奇的是为什么上面的方法不起作用。
最佳答案
它打印 undefined
的原因, b
, c
是因为如何for loop有效。
for (initialization; condition; final expression)
让我们分解您的 for 循环。
初始化:i = 0
条件:i < 3
最终表达式:i++, rowName = ['a', 'b', 'c'][i]
第一次进入循环时,i
设置为 0
.这是初始化步骤。然后是条件步骤,i < 3
, 被选中。这是在每次迭代之前完成的,以决定是否继续循环。在每个循环之后,最终表达式 被计算。在您的示例中,您递增 i
设置前 rowName
等于 ['a', 'b', 'c']
中的一个元素基于当前指数。
在您的例子中,在第一次迭代中,rowName
是undefined
因为 final expression 尚未计算。此后的每次迭代都按照您的预期进行,因为之前已经计算了最终表达式。
关于javascript - 为什么这个简单的 for 循环没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684504/