比尔蜥蜴说明了this answer中使用等于运算符(==
)的危险和缺点。然而,关于秘密的“邪恶双胞胎”,>=
和<=
,几乎没有人说过。
0 >= '' // true
0 <= '' // true
'' >= 0 // true
'' <= 0 // true
因此,我的问题是:
false
? undefined
?请记住,如果a >= b === false
,则表示a < b === true
。<
)和小于(>
)运算符也会进行类型转换,对它们有什么奇怪的情况吗?答案 0 :(得分:3)
默认情况下,不同类型的元素是否应具有可比性?
这只在您设计语言时才有意义。在JavaScript中,不同类型的值具有可比性,并且比较遵循某些规则。你必须要意识到它们,但我没有看到任何一点讨论“如果规则不同会怎么样”。
可以做些什么来以实际的方式避免奇怪的情况 在这个例子中?
只是避免比较不同类型的值,大多数情况都没有意义。有用的唯一情况是将数字字符串与数字进行比较。在这种情况下,JavaScript的行为与任何人预期的一样,没有奇怪的结果。
由于大于(&lt;)和小于(&gt;)运算符 也做类型转换,它们有什么奇怪的情况吗?
我确信有,虽然我现在想不到一个。但为什么你认为你的例子很奇怪?由于类型转换,您似乎理解"" == 0
,因此难怪您的示例中的所有比较都返回true
,因为它们都包含零。