【问题标题】:Why is there overflow in this for loop?为什么这个for循环有溢出?
【发布时间】:2019-02-02 23:06:39
【问题描述】:

这个循环一直循环到 -30808,我不知道为什么!我想让它从 100 倒数到 1 或 0。

停止条件小于 num 或 1。

它有什么问题?

谢谢

function first(num){
       for (let i = num - 1; i > num || 1; i--){
         let numFactorial = i;
          console.log(numFactorial);
       }
    };
  first(100);

【问题讨论】:

  • i > num || 1 始终为真,因为i > num OR 1 有一个为真。
  • 因为你的停止测试 i > num || 1 真的是 (i > num) || (1) 这将永远是真的。所以它不会停止。简,停止这种疯狂的事情!
  • 您将 i 设置为 num - 1 并将其递减,并且您的循环终止正在检查 i 何时大于 num。它总是小于 num。
  • 谢谢!那我应该怎么重写呢?

标签: javascript loops for-loop overflow


【解决方案1】:

您将 i 初始化为 num -1 并开始递减,这意味着它永远不会大于 num。如果您试图在 i 大于或等于 1 时继续循环,那么它应该如下所示。

for (let i = num - 1; i >= 1; i--)

同样,当您尝试使用 || 比较具有两个不同条件的变量时或 && 请按以下方式进行操作,而不是 i > num || 1 在这里您将 i 与 num 进行比较,但不与 1 进行比较。

我 > 数字 ||我 >= 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多