【问题标题】:While Loops Syntax ErrorsWhile 循环语法错误
【发布时间】:2014-10-14 10:44:18
【问题描述】:

课程要求我形成一个 while 循环,但我不断收到错误或无限循环。我做错了什么?

var understand = true;

while(understand= true){
    console.log("I'm learning while loops!");
    understand = false;
}

【问题讨论】:

  • 我很好奇,为什么你认为= 在不同的位置会有不同的表现?我推荐阅读 MDN JavaScript 指南来学习基础知识:developer.mozilla.org/en-US/docs/Web/JavaScript/Guide
  • 我正在使用 Codeacademy 学习 Javascript,但它从未提到 = 和 == 的使用方式不同。我只是假设它们是可以互换的。
  • 这就是为什么从多个来源学习是件好事。
  • 是的,这是个好主意。感谢您的链接。

标签: javascript while-loop


【解决方案1】:

您使用的是赋值运算符 (=),而不是等于测试 (==)。

使用:while(understand == true)

或简化:while(understand)

来自 cmets 的更新:

=== 表示值和数据类型必须相等,而== 会在比较之前尝试将它们转换为相同的类型。

例如:

"3" == 3 // True (implicitly)
"3" === 3 // False because a string is not a number.

【讨论】:

  • 非常感谢。这解决了它并帮助我清除了这两者之间的区别。
  • 另外,你能解释一下 === 是什么吗?有什么不同吗?
  • @Tim === 是严格比较。虽然== 将尝试使双方的数据类型相同,但=== 不会。所以1 == "1" 有效,而1 === "1" 无效。
  • @SpencerWieczorek:我假设 “使双方相同” 的意思是“将两个值转换为相同的数据类型”。
【解决方案2】:

= 表示赋值,== 表示比较。所以:

while(understand == true)

还要注意while等分支结构,取条件。由于这是一个布尔值,您可以只使用它自己:

while(understand)

还要注意===== 之间的区别(严格比较)。比较== 将在比较值之前尝试将两侧转换为相同的数据类型。虽然严格比较 === 没有,但在大多数情况下会更快。比如:

1 ==  "1"  // This is true
1 === "1" // This is false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多