for循环中后增量运算符的结果不同

时间:2013-03-06 05:51:40

标签: javascript variables for-loop increment

在Javascript中,我无法理解为什么这两组代码会提供不同的结果:

for (var i = 0, a = []; i++ < 9;) {a.push(i);}

运行此代码后,变量a如下:[1, 2, 3, 4, 5, 6, 7, 8, 9]

但是,此代码返回其他内容:

for (var i = 0, a = []; i < 9; i++) {a.push(i);}

相反,运行此代码后,变量a如下:[0, 1, 2, 3, 4, 5, 6, 7, 8]

所以,主要问题是:为什么会这样?

感谢您解释这种差异的任何答案。

1 个答案:

答案 0 :(得分:2)

这只是for循环操作发生的顺序。评估三个表达式:

  for (before the loop starts;                   // initialization 
       before each iteration of the loop;        // loop condition
       at the end of each iteration of the loop) // loop increment

这使得i++在相对于循环体的不同时间运行并解释您看到的结果。