在 Javascript While 循环在控制台上运行时从 1 计数到 5 时重复最后一个数字 [重复]

Posted

技术标签:

【中文标题】在 Javascript While 循环在控制台上运行时从 1 计数到 5 时重复最后一个数字 [重复]【英文标题】:In Javascript While loop repeats last number when counting from 1 to 5 when run on console [duplicate] 【发布时间】:2015-10-04 18:16:52 【问题描述】:

在控制台上运行以下代码时:

var counter=0; while(counter<5) console.log(counter); counter++;

控制台 o\p: 0 1 2 3 4 4

而以下代码工作正常,无需重复最后一个值:

for(var i=0; i<5; i++) console.log(i);

控制台 o\p: 0 1 2 3 4

现在,如果我在上面提到的while循环之后放置for循环,输出就很好了:

var counter=0; while(counter<5) console.log(counter); counter++; for(var i=0; i<5; i++) console.log(i);

控制台 o\p: 0 1 2 3 4 0 1 2 3 4

然而,如果我在 for 循环之后放置 while 循环,则会重复找到的最后一个数字。

for(var i=0; i<5; i++) console.log(i); var counter=0;while(counter<5) console.log(counter); counter++;

控制台 o\p: 0 1 2 3 4 0 1 2 3 4 4

要求所有人提供有关 while 循环这种意外行为的原因。 谢谢。

【问题讨论】:

我不认为有问题看到它在这里工作jsfiddle.net/7p5L6kzz last 4 在第一种情况下 - 只是 counter++ anfter 循环的值,所以它不是 console.log 输出 请注意,在 for 循环版本中,您不会重复 4,而是在控制台上看到 undefined - 即它仍然显示“额外”的内容。 就像@JamesThorpe 说的那样:不是重复 4,而是在控制台上看到 undefined @HockeyJ 这只是将其从显示额外的 4 更改为显示“额外的” 5。 【参考方案1】:

在控制台执行操作时,总是输出最后执行的行的返回值。

这意味着简单的写作

var counter = 0; ++counter;

会将1 记录到控制台。

同样的情况发生在你的循环中,最后一个 counter++ 的返回值作为最后执行的表达式的值输出到控制台。

【讨论】:

在 Chrome 中(不确定其他浏览器),这由一个灰色的小箭头表示。 感谢您的输入,“他最后执行的行的返回值总是输出。”那么为什么当我在 while 之后添加一个 for 循环时它没有发生。 @Sarge 它正在发生,请参阅我上面对这个问题的评论。在这种情况下,“最后执行的行的返回值”是undefined,您确实会在for 循环版本之后看到它。【参考方案2】:

日志方法的输出取决于浏览器的javascript引擎。最后打印的值不是循环本身的输出。

尝试:var counter=0; while(counter

【讨论】:

以上是关于在 Javascript While 循环在控制台上运行时从 1 计数到 5 时重复最后一个数字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript的流程控制之for循环语句和while循环语句

JavaScript流程控制语句——循环结构和跳转语句

JavaScript流程控制语句——循环结构和跳转语句

Javascript - while 循环间歇性地无限运行?

我不懂简单的 JavaScript 'while 循环'

javascript的程序控制结构及语句------循环控制语句跳转语句对话框