我可能在这里有点厚,但请回答我。请考虑以下代码:
a=1;
while(a<=6) {
console.log(a);
a++;
}
如果我运行这个,我会在控制台中获得1到6的值,然后是另一个6。
现在看看:
a=1;
while(a<=6) {
console.log(a);
++a;
}
现在运行它将获得从1到7的值。
为什么会这样?我的理解是语句块只有在表达式求值为true时才会运行。在我的第二个例子中,这怎么可能呢?为什么6在第一次出现两次?对我来说很困惑。
如果你能简单地解释(我还在学习)那就太棒了。
答案 0 :(得分:13)
控制台会为您打印评估的最后一个语句的值。在第二种情况下,你预先递增,所以它的值是7,而不是第一种情况下的6。
更改console.log()
来电以打印更多内容,这一点很明显:
console.log("a is: " + a);
你不会在最后一行看到这个前缀。
答案 1 :(得分:2)
在这两种情况下,你都会看到一个额外的数字,因为控制台正在输出循环中最后一个语句的结果。
如果不直接在控制台中执行该代码,您将看不到多少数字。
答案 2 :(得分:0)
请参阅fiddle及其回复。两者都返回1到6。
a ++:在增量之前返回 a 的值。
++ a :在增量后返回 a 的值。
循环执行直到'a'&lt; = 6。
的值当您在控制台上运行任何代码时,它会评估变量值并打印其值,这也是您在输出中再获得一个6
和7
的原因。
不用担心,当您运行此代码时,将只获得1-6值。