javascript while循环在节点和浏览器中给出不同的结果

javascript while loop giving different results in node and browser

本文关键字:结果 浏览器 循环 while 节点 javascript      更新时间:2023-09-26

我正在执行以下看似简单的代码

var number = 0;
while (number <= 12) {
    console.log(number);
    number = number + 2;  
}

我在浏览器和Node中得到了不同的结果。当我在Firefox(v.32.0.3)上的Firebug(v.2.0.4)控制台中运行它时,我得到的结果是

02.4.6.8.101214

这不是我所期望的结果。

在Node中,相同的代码给了我正确的答案,那就是

02.4.6.8.1012

关于浏览器中的行为,我有什么遗漏吗???

提前谢谢。

如果您稍微更改代码:

var number = 0;
while (number <= 12) {
    console.log("z" + number);
    number = number + 2;  
}
z0
z2
z4
z6
z8
z10
z12
14

您将看到循环没有打印14。相反,当循环结束运行并由控制台本身打印时,这是表达式的结束值。

FIREFOX

while (number <= 12) {
    console.log("z" + number);
    number = number + 2;  
}
14
"z0"
"z2"
"z4"
"z6"
"z8"
"z10"
"z12"

在Firefox中,它运行整个循环,打印结果,然后赶上控制台。

如果在Firebug的控制台中运行脚本,它将评估代码。因此,它正在评估while循环中最后一个数字的值(现在是14),并将其打印出来。它实际上将number的值打印了8次,但将它们分组为1次打印。

只需在命令行中键入"window"即可看到相同的效果。它正在评估它的价值,并在控制台中打印出来。

更多信息可以在Firebug命令行的描述中找到。