我对下面关于等于比较运算符
如果两个操作数类型不同,则JavaScript将转换操作数,然后应用严格比较。 如果任一操作数是数字或布尔值,则尽可能将操作数转换为数字; 否则,如果任一操作数是字符串,则将另一个操作数转换为字符串。 如果两个操作数都是对象,则JavaScript会比较内部引用,当操作数在内存中引用相同对象时它们相等。
然而,
如果任一操作数是数字或布尔值,则尽可能将操作数转换为数字。
在什么情况下,JavaScript将true和"true"转换为数字?上面的例子没有将它们转换为数字。
我看这些例子时有更多疑问:
==
的陈述感到困惑:如果两个操作数类型不同,则JavaScript将转换操作数,然后应用严格比较。 如果任一操作数是数字或布尔值,则尽可能将操作数转换为数字; 否则,如果任一操作数是字符串,则将另一个操作数转换为字符串。 如果两个操作数都是对象,则JavaScript会比较内部引用,当操作数在内存中引用相同对象时它们相等。
然而,
alert(true == "true")
和alert(false == "false")
都返回false。这是为什么?如果任一操作数是数字或布尔值,则尽可能将操作数转换为数字。
在什么情况下,JavaScript将true和"true"转换为数字?上面的例子没有将它们转换为数字。
我看这些例子时有更多疑问:
'' == '0' // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
''
是false,而'0'
是true,但为什么输出却是false?0
会被解释为false,同样的,''
也是false。这使得它变成了true。我能理解。- 当
0
是false时,为什么'0'
被解释为true? - 为什么
false
被解释为false,而'0'
被解释为true?
有人能更详细地解释一下==
操作符是如何工作的吗?
===
而不是==
进行精确相等性比较。===
会检查类型和值是否相等。 - Tusharfalse == true
返回false
... - Teemu