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

时间:2014-10-07 19:34:02

标签: javascript node.js while-loop firebug

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

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

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

0 2 4 6 8 10 12 14

这不是我预期的结果。

在Node中,相同的代码给出了正确的答案

0 2 4 6 8 10 12

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果您稍微更改了代码:

<强> CHROME

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中,它运行整个循环,打印结果然后赶上控制台。

答案 1 :(得分:1)

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

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

可以在Firebug's command line的说明中找到更多信息。