【发布时间】:2021-05-29 10:55:52
【问题描述】:
在 javascript 的 while 循环中获取从 30 到 40 的所有奇数的过程中,我遇到了无法将解决此任务的 for 循环代码平等地转换为它的问题while 循环对应物。我的while循环给出了一个额外的'41'。是我的转换错误还是 while 循环与 JavaScript 中的 for 循环本质上不同?
const max = 40;
const min = 30;
for (let i = min + 1; i < max; i += 2) {
console.log(i);
}
// 31 33 35 37 39
const max = 40;
const min = 30;
let i = min + 1;
while (i < max) {
console.log(i);
i += 2;
}
// 31 33 35 37 39 41
然而,如果我们在上面的 while 循环下面写下 'console.log('end')',它就会正常工作。这要怎么解释?是系统BUG吗?
【问题讨论】:
-
我认为您对
while版本输出的内容有误。请提供一个完整的程序来演示您所说的内容,并告诉我们它是用什么编程语言编写的……以便我们自己编译和运行。 -
在你的while循环中返回的41不是因为console.log,而是在你的while循环完成后,你得到的返回值为41。尝试评论console.log while 循环并执行你的代码然后你就会明白了。
-
(值得一提的是,将上述内容简单音译成Java表明两个版本输出相同的结果。)
-
@Stephen Java 中的结果相同吗?好吧,在 JavaScript 中它们肯定是不一样的。确实是两个世界:)
-
我用 Javascript 答案更新了我的答案。我真的认为你错了。
标签: javascript for-loop testing while-loop transform