JavaScript数组迭代 - MDN示例

时间:2013-05-13 16:17:04

标签: javascript arrays for-loop increment

我正在阅读MDN网站上对JavaScript的重新介绍,并在数组部分遇到了这个例子:

for (var i = 0, item; item = a[i++];){
   // Do something with item
}

其中“a []”是循环的数组。

我对“item”在第一次迭代中的值感到困惑。当i = 0并且item首先是未定义的,那么当它被赋值时,[i ++]的值不会从i = 1开始迭代,这意味着迭代将从a中的第二个元素开始[ ] array - > a [1],完全跳过第一个元素a [0]?

3 个答案:

答案 0 :(得分:4)

i++ post 增量运算符,这意味着它会i增加1,但会计算为旧的(非增量)值。< / p>

> i = 0
  0
> i++
  0
> i
  1

答案 1 :(得分:2)

i ++是后增量(参见其他答案),项目不会是未定义的,因为谓词(for循环中的第二部分)在每次迭代之前执行。

for (var i = 0, item ; item = a[i++];) {

将评估为:

var i = 0;
var item;

item = a[i];  // loop
i += 1
if (!item) // exit loop
// loop body
// start again at loop

这种语法的问题是,如果a中的值是假的,则循环将过早终止。

var a = [1,2,0,3,4];
for (var i = 0, item ; item = a[i++];) {
   console.log(item);
}

将输出“1 2”,因为“0”是假的并且循环终止

答案 2 :(得分:1)

i ++意味着javascript读取i值然后递增