我在MDN网站上阅读了对JavaScript的重新介绍,并在数组部分遇到了这个示例:
for (var i = 0, item; item = a[i++];){
// Do something with item
}其中"a[]“是一个被循环的数组。
我对"item“在第一次迭代中的值感到困惑。由于i=0和item最初未定义,那么当为其赋值ai++时,迭代不是从i=1开始吗?这意味着迭代将从a[]数组-> a1中的第二个元素开始,完全跳过第一个元素a?
发布于 2013-05-14 00:18:15
i++是后增量运算符,这意味着它将i递增1,但计算结果为旧的(非递增的)值。
> i = 0
0
> i++
0
> i
1发布于 2013-05-14 00:25:05
i++是post增量(参见其他答案),item不会是未定义的,因为谓词( 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”是falsy并且循环终止
发布于 2013-05-14 00:18:32
i++意味着javascript读取i值,然后递增它。
https://stackoverflow.com/questions/16526670
复制相似问题