为什么这个简单的for循环不能按预期工作?

Mar*_*ark 5 javascript loops

有人可能会想到下面的打印出来a,b,c.

var i, rowName;
for (i = 0; i < 3; i++, rowName = ['a', 'b', 'c'][i]) {
    console.log(rowName);
}
Run Code Online (Sandbox Code Playgroud)

相反,但是,它打印出undefined,b,c.为什么?

澄清:我知道如何使这项工作; 我很好奇的是为什么以上不起作用.

roy*_*wie 5

它打印的原因undefined,b,c是因为如何一个for循环工作.

for (initialization; condition; final expression)
Run Code Online (Sandbox Code Playgroud)

让我们分解你的循环.

初始化:i = 0

条件:i < 3

最终表达:i++, rowName = ['a', 'b', 'c'][i]

首次输入循环时,i设置为0.这是初始化步骤.然后检查条件步骤i < 3.这在每次迭代之前完成,以决定是否继续循环.在每个循环之后,评估最终表达式.在您的示例中,在基于当前索引i设置rowName等于元素之前递增['a', 'b', 'c'].

在您的情况下,在第一次迭代中,rowNameundefined因为尚未评估最终表达式.之后的每次迭代都表现得如您所期望的那样,因为最终的表达式之前已经被评估过了.