javascript while loop giving different results in node and browser

时间秒杀一切 提交于 2019-12-02 15:31:28

问题


I am executing the following seemingly straightforward code

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

and I am getting different results in the browser and in Node. When I run it in the Firebug(v 2.0.4 ) console on Firefox(v. 32.0.3) the result I get is

0 2 4 6 8 10 12 14

which is not`the result I expected.

In Node, the same code gives me the correct answer which is

0 2 4 6 8 10 12

Is there anything I'm missing regarding the behaviour in the browser???

Thanks in advance.


回答1:


If you run a script in Firebug's console, then it will evaluate the code. So it's evaluating the value of the last number in the while loop (which is now 14) and prints that out. It's actually printing out the value of number 8 times but groups them in 1 print out.

You can see the same effect by just typing in "window" in the command line. It's evaluating it's value and prints it out in the console.

More info can be found in the description to Firebug's command line.




回答2:


If you slightly change your code:

CHROME

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

z0
z2
z4
z6
z8
z10
z12
14

You'll see that the 14 is not being printed by the loop. Rather, that is the end value of the expression when the loop finishes running and is printed by the console itself.

FIREFOX

while (number <= 12) {
    console.log("z" + number);
    number = number + 2;  
}

14
"z0"
"z2"
"z4"
"z6"
"z8"
"z10"
"z12"

In Firefox, it runs the entire loop, prints the result and then catches up with the console.



来源:https://stackoverflow.com/questions/26243785/javascript-while-loop-giving-different-results-in-node-and-browser

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!