为什么“ true” == true在JavaScript中显示为false?

以撒:

MDC对==操作员的描述如下

如果两个操作数的类型不同,则JavaScript会转换这些操作数,然后进行严格比较。如果操作数是数字或布尔值,则在可能的情况下将操作数转换为数字;否则,操作数将转换为数字。否则,如果一个操作数是一个字符串,则另一个操作数将转换为字符串(如果可能)。

考虑到这一点,我将评估"true" == true如下:

  1. 它们是同一类型吗?没有
  2. 操作数是数字还是布尔值?
  3. 我们可以将它们都转换为数字吗?isNaN(Number("true")) // true
  4. 两个操作数都是字符串吗?
  5. 我们可以将另一个操作数转换为字符串吗?String(true) === "true" // true

我最终得到了字符串"true""true",其结果应为true,但是JavaScript显示为false。

我错过了什么?

MaxArt:

因为"true"转换为NaN,而true则转换为1所以他们不同。

就像您报告的那样,两者都被转换为数字,因为至少true可以被转换(请参阅Erik Reppen的评论),然后进行比较。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在Javascript中,(!+ [] + [])为'true'和(false + [])为'false'?

为什么JavaScript中的“” == [null]为true?

为什么!{} [true]在JavaScript中评估为true?

当 {a statement that is equal to True} == True 评估为 false 时,为什么 True == True 评估为 True?

为什么 (true || false && false) 评估为 true?

为什么JavaScript负数不总是为true或false?

为什么$ false -eq“”为true?

javascript 中 true && true && true && false && true && true && true 的结果是什么?

为什么“ True or False”比“ False或True”要快?

为什么“ range(2)== True中的1”评估为False?

为什么 Python3 中的 True, True, True == (True, True, True) 给出 o/p True, True, False?

为什么“ [False,True]中的not(True)”返回False?

为什么“ [] == true”和“![] == true”都评估为false?

为什么lodash`_.all([true,true,true],true);`返回`false`?

序言:为什么是 true == not(not(true)) -> false?

布尔代数-为什么(True and False)True?

为什么{} == false评估为false,而[] == false评估为true?

为什么(false == 0)是TRUE?

为什么“ True and〜True” -2?

为什么“ False is False is False”评估为“ True”?

为什么“ False is False is False”评估为“ True”?

为什么“ True == False is False”评估为False?

为什么“” <{}评估为true?

为什么输出“ True”

结合布尔掩码,为什么在 Python 中:[False, True] 和 [True, False] == [True, False]

为什么在argparse中,“ True”始终为“ True”?

为什么在Python中`(True,True,True)== True,True,True`不是True?

为什么[False]中的False == False会返回True?

为什么`True is False == False`,在Python中是False?