在尝试使用“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)
执行之前递增了吗?
答案 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
但我从未见过我在许多地方使用的++。