可以说每个人都学习使用后增量编写for循环:
for(var i = 0; i < 10; i++) {
console.log(i); // 0..9
}
当我将后增量交换为预增量时,我期望以下内容:
for(var i = 0; i < 10; ++i) {
console.log(i); // 1..10
}
我的推理:i
初始化为0
;当i
小于10时,循环的主体将被执行; i
递增到1
并输入循环体;值i
的{{1}}打印出来以确认;再次评估循环的条件;等
然而,输出(至少对于Chrome中的JavaScript)与后增量相同:1
。这是为什么?身体运行后是否执行增量?
答案 0 :(得分:8)
for循环的最后一部分只发生在每个循环的 end 。
所以++i
和 i++
在这种情况下做的基本相同。
操作顺序:
var i = 0;
while (i < 10) {
// do stuff
console.log(i);
// increment i in your own way
++i; // or i++;
}
答案 1 :(得分:-1)
在后一个例子中,操作顺序是
var i = 0; // obviously
if (i < 10) /* proceed */
console.log(i);
++i;
“++”并没有像你想象的那样说“以完全不同的顺序跳转队列并进行操作”。
答案 2 :(得分:-1)
身体运行后是否执行增量?是。
看到那些分号?他们的意思是完全不同的表达方式。
举一个小例子:
var i = 0;
if (i<5)
i++;
console.log(i);
和
var i = 0;
if (i<5)
++i;
console.log(i);
(这些示例不会复制循环的功能。)您会看到,两者都会得到相同的答案,因为就像for
循环一样,它们完全是单独的表达。
现在,如果你有:
var i = 0;
i += i++;
console.log(i);
和
var i=0;
i+= ++i;
console.log(i);
啊,既然运算符被用在相同的表达式中,那么我们使用的那个很重要!
这基本上就是发生了什么。因为它们是不同的表达式,所以想象它们在不同的行上运行。