8

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

a=1;
while(a<=6) {
   console.log(a);
   a++;
}

如果我运行它,我会在控制台中得到从 1 到 6 的值,然后是另一个 6。

现在看看这个:

a=1;
while(a<=6) {
    console.log(a);
    ++a;
}

运行它现在将得到从 1 到 7 的值。

为什么会这样?我的理解是,语句块只有在表达式计算为真时才会运行。在我的第二个示例中,这怎么可能?为什么 6 在第一次出现两次?对我来说很困惑。

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

4

3 回答 3

13

控制台会为您打印最后评估的语句的值。在第二种情况下,您预先增加,所以它的值是 7 而不是第一种情况下的 6。

更改您console.log()的电话以打印更多内容,这很明显:

console.log("a is: " + a);

您不会在最后一行看到该前缀。

于 2012-06-26T16:13:46.657 回答
2

在这两种情况下,您都会看到一个额外的数字,因为控制台正在输出循环中最后一条语句的结果。

当该代码未直接在控制台中执行时,您将看不到似乎是多余的数字。

于 2012-06-26T16:19:49.220 回答
0

看看他们的反应小提琴。两者都返回 1 到 6。

a++ :它返回增量之前的a的值。

++a:它返回递增后的a值。

循环执行直到 'a'<= 6 的值。

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

No worries, when you'll run this code, will get the 1-6 values only.

于 2012-06-26T17:04:18.203 回答