【问题标题】:Why does this javascript loop return infinitely?为什么这个javascript循环无限返回?
【发布时间】:2023-03-28 17:20:01
【问题描述】:

谁能解释一下为什么下面的代码会返回一个无限循环而不是重新定义foo

var foo = 2;

while (foo = 2) {
   foo = 3;
}

console.log('foo is ' + foo);

当然,第一次循环会运行,因为foo 确实等于2。但是,我不明白为什么要继续运行;第一次通过后foo 现在应该设置为 3,参数应该返回 false,console.log('foo is ' + foo); 应该打印foo is 3

显然我在这里遗漏了一些东西。

【问题讨论】:

  • 这到底是怎么回事?
  • 太棒了。谢谢大家。

标签: javascript loops while-loop infinite


【解决方案1】:
while (foo == 2) {
   foo = 3;
}

您缺少一个等号(如果您想要更严格的检查,则缺少两个)

while (foo === 2) {
   foo = 3;
}

【讨论】:

  • 从语法上讲它是完全正确的。这是一个逻辑错误。
  • JavaScript 有一个“真”和“假”的概念,这意味着您可以对非布尔值使用布尔逻辑。 2 的值是真值,所以while (2)while (true) 相同。
【解决方案2】:

您将值 2 分配给 foo,而不是在此处的条件中进行比较:

while (foo = 2)

改成:

while (foo == 2)

【讨论】:

    【解决方案3】:

    打开循环时你可能会错过“while (foo == 2)”,

    如果它再次打印无穷大,让它知道我..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-08
      • 2012-05-02
      • 2011-11-15
      • 2018-03-17
      • 1970-01-01
      • 2019-10-25
      • 2012-11-01
      • 1970-01-01
      相关资源
      最近更新 更多