为什么false =="false"是假的?

vie*_*365 6 javascript

我还在学习javaScript的基础知识,我不明白为什么会这样.

类型强制false == "false"将转换为:

false == false //true
Run Code Online (Sandbox Code Playgroud)

要么

"false" == "false" //true
Run Code Online (Sandbox Code Playgroud)

那么,为什么false == "false"是假的?

Que*_*tin 20

您误解了类型转换规则.false在比较之前不会转换为字符串.

如果Type(x)是布尔值,则返回比较结果ToNumber(x)== y.

false 转换为数字,它给出:

+0 == "false"
Run Code Online (Sandbox Code Playgroud)

… 然后 …

如果Type(x)为Number且Type(y)为String,则返回比较结果x == ToNumber(y).

... "false"被转换为数字,它给出:

+0 == NaN
Run Code Online (Sandbox Code Playgroud)

......这是假的.

  • @sahaj - 没有 `===` 它不会。 (3认同)
  • 因此假==="0"将导致为真. (2认同)
  • 是的,请原谅我的拼写错误。应该是==。即 false == "0" 将导致 true。 (2认同)

nyc*_*nik 5

答案是因为“ false”是一个字符串(正如Gerardo Furado在评论中指出的那样),所以您进行的测试等同于false =“ hello”。

Javascript不会查看字符串中的单词来确定它是否为布尔值,然后尝试从中获取值。

注意:

通常,在javascript中,现在最好使用===运算符,以避免所有这些情况。