【问题标题】:Why does true == "true" returns false? [duplicate]为什么 true == "true" 返回 false? [复制]
【发布时间】:2021-11-10 21:22:44
【问题描述】:

假设我们有一个条件,将字符串"true" 与布尔值true 进行比较。它返回false,尽管true == '1' 返回true。如果你做true == !!"true",这将返回true,所以它应该意味着,从一开始"true"就是true。是否有任何我遗漏的特定逻辑,或者它仅适用于 01 的字符串表示?

console.log(true == 'true')

【问题讨论】:

  • "所以它应该意味着,从一开始就是"true"" 不,这实际上并不符合逻辑。 !!42 也是 truetrue == 42 仍然是 false 因为它们不是松散相等的。 == 不比较 convertstrue 的内容,毕竟,它通过将两个操作数转换为公共基数来比较它们。
  • 在这里加了我的两分钱:stackoverflow.com/a/69199489/6840789

标签: javascript conditional-statements compare


【解决方案1】:

因为“true”转换为NaN,而true转换为1。所以它们不同。

-- Source

【讨论】:

  • 非常感谢!这真的很棘手:)
  • 我要补充一点,!!"true" 返回 true 的原因是双 bang 运算符将 Object 转换为 boolean,只要操作数不为 false,就会返回 true,例如0nullundefined 等。值得注意的是,!!"0"!!"1" 返回 true,而 !!0 返回 false。这是因为true 示例中的操作数是非空字符串。
猜你喜欢
  • 2019-02-08
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2013-11-10
  • 2015-10-03
  • 2019-12-07
相关资源
最近更新 更多