【发布时间】:2015-11-13 01:29:27
【问题描述】:
您可能希望以下内容打印出a、b、c。
var i, rowName;
for (i = 0; i < 3; i++, rowName = ['a', 'b', 'c'][i]) {
console.log(rowName);
}
但是,它会打印出undefined、b、c。为什么?
澄清一下:我知道如何做到这一点;我很好奇的是为什么上面的方法不起作用。
【问题讨论】:
-
最终表达式仅在每次循环迭代的结束 处计算。
rowName在此之前未定义。见for @ MDN -
for循环中的第三个(和第二个)表达式直到每次迭代结束时才被计算。如果预先评估它以分配rowName,它也会立即将i增加到1,跳过0的初始值。 -
文档再清楚不过了。它说“final-expression 一个要在每次循环迭代结束时评估的表达式。这发生在下一次评估条件之前。通常用于更新或增加计数器变量。”
标签: javascript loops