有人可能会想到下面的打印出来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.为什么?
澄清:我知道如何使这项工作; 我很好奇的是为什么以上不起作用.
它打印的原因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'].
在您的情况下,在第一次迭代中,rowName是undefined因为尚未评估最终表达式.之后的每次迭代都表现得如您所期望的那样,因为最终的表达式之前已经被评估过了.