混淆while循环在javascript中

时间:2012-06-26 16:12:00

标签: javascript

我可能在这里有点厚,但请回答我。请考虑以下代码:

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在第一次出现两次?对我来说很困惑。

如果你能简单地解释(我还在学习)那就太棒了。

3 个答案:

答案 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。

的值

当您在控制台上运行任何代码时,它会评估变量值并打印其值,这也是您在输出中再获得一个67的原因。

不用担心,当您运行此代码时,将只获得1-6值。

相关问题