为什么 or 语句不能在 for 循环中工作?[关闭]

Why won't or statement work in a for loop? [closed]

提问人:Aiden Berry 提问时间:9/26/2023 最后编辑:Aiden Berry 更新时间:9/26/2023 访问量:44

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

上个月关闭。

我正在查看 w3schools JavaScript 教程,发现了一些导致它崩溃的东西。我试图在for循环的第二个语句中用相同的内容替换break语句。这并不是真正的问题,我只是觉得有些地方我不明白。

这是他们拥有的代码:

<html>
<body>

<h2>JavaScript Loops</h2>

<p>A loop with a <b>break</b> statement.</p>

<p id="demo"></p>

<script>
let text = "";
for (let i = 0; i < 10; i++) {
  if (i === 3) { break; }
  text += "The number is " + i + "<br>";
}

document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>

而且它工作得很好。然后我把它改成这样:

<html>
<body>

<h2>JavaScript Loops</h2>

<p>A loop with a <b>break</b> statement.</p>

<p id="demo"></p>

<script>
let text = "";
for (let i = 0; i < 10 || i !== 3; i++) {
  text += "The number is " + i + "<br>";
}

document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>

然后,如果我运行它,网页就会崩溃。 如果我将 or() 更改为 and(),那么它就可以工作了。 为什么会这样?||&&

javascript html for 循环 变量 client-side-scripting

评论

1赞 deceze 9/26/2023
想一想:如果 i 小于 10,或者如果不是 3,它将执行循环。当大于 10 时,它是什么?当然不是 3。所以条件总是真的。i
0赞 Aiden Berry 9/26/2023
@deceze 是的,这是真的。我只是没有想太多,我只是想知道。
0赞 GrafiCode 9/26/2023
此外,那个工作得很好:如果你想到它,这将是for (let i = 0; i < 10; i++) { if (i === 3) { break; } }for (let i = 0; i < 3; i++) {

答:

0赞 Alexander Nenashev 9/26/2023 #1

i < 10 || i !== 3将始终是 OR 和 因此 .因此,循环将永远持续并挂起浏览器。truei < 10i >= 10i !== 3

语句的第二部分是一个条件:for

for (initialization; condition; afterthought)

在每个周期开始时对其进行评估,以及循环是否会在下一个周期继续进行。 让它总是使循环永远运行。truetrue