在 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 last4
在第一种情况下 - 只是 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循环语句