Javascript - " ++ i"工作?

时间:2014-08-14 22:28:06

标签: javascript for-loop iterator console.log

在尝试使用“i ++”和“++ i”后,我在'for'循环中使用时找不到它们的结果之间的差异。 例如:

for (var i = 0; i < 10; ++i) {
    console.log(i);
}

会产生:

0
1
2
3
4
5
6
7
8
9

不应该从1到10打印出数字,因为迭代器在console.log(i)执行之前递增了吗?

3 个答案:

答案 0 :(得分:4)

执行循环体后,在执行后执行“增量步骤”。给定

for (a;b;c) {
  d
}

执行顺序是

a // initialize
b // condition - first iteration
d // loop body
c // "increment"
b // condition - second iteration
d // loop body
c // "increment"
...
b // condition - last iteration - break

所以在你的情况下:

var i = 0;
i < 10;
console.log(i); // 0
++i;
i < 10;
console.log(i); // 1
++i;
// ...
i < 10;

i++++i之间的差异仅在您使用返回值执行某些操作时才有意义。

答案 1 :(得分:0)

因为for循环的最后一个子句只发生在循环的末尾,作为它自己的语句,循环的行为不受这种差异的影响。但是,想象你做了这样的事情:

for (var i = 0; i < 10;) {
    console.log(++i);
}
for (var j = 0; j < 10;) {
    console.log(j++);
}

然后你会看到一个区别。第一个例子产生数字1-10,而第二个例子产生数字0-9。这是因为f(j++)相当于j += 1; f(j);,而f(++i)更像是f(i); i += 1;

答案 2 :(得分:0)

我可以建议您在所使用的平台上进行测试时,标准构造是i ++

始终对标准进行编码并隔离各种平台并根据需要制作例外!!!

i ++简单地说就是增加&#39; i&#39;一个人。

我可以推测++我的意思是添加&#39; i&#39;对自己,例如,如果&#39; i&#39;是2然后它会增加到2,4,8,16,32

但我从未见过我在许多地方使用的++。