混淆while循环在javascript中

Mat*_*son 7 javascript

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

a=1;
while(a<=6) {
   console.log(a);
   a++;
}
Run Code Online (Sandbox Code Playgroud)

如果我运行这个,我在控制台中从1到6获得值,然后是另一个6.

现在看看这个:

a=1;
while(a<=6) {
    console.log(a);
    ++a;
}
Run Code Online (Sandbox Code Playgroud)

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

为什么会这样?我的理解是语句块​​只有在表达式求值为true时才会运行.在我的第二个例子中,这怎么可能呢?为什么6在第一次出现两次?对我来说很困惑.

如果你能简单地解释(我还在学习),这将是伟大的.

Poi*_*nty 13

控制台为您打印评估的最后一个语句的值.在第二种情况下,您预先递增,因此它的值是7而不是第一个中的6.

改变你console.log()打电话打印更多东西,这很明显:

console.log("a is: " + a);
Run Code Online (Sandbox Code Playgroud)

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

  • 它没有超过最初的条件.只是发生了最后执行的语句是`++ a;`所以它被控制台"免费"打印. (2认同)
  • 啊!!Penny drop ...浏览器总是打印出最终值.谢谢 - 这突然变得很明显,我很高兴我没有解决. (2认同)