在 Javascript 中,==
比较有一个严格的(非类型转换)版本:===
. 同样,!=
有严格的形式!==
。这些可以保护您免受以下疯狂行为的侵害:
var s1 = "1",
i1 = 1,
i2 = 2;
(s1 == i1) // true, type conversion
(s1 != i1) // false, type conversion
(s1 === i1) // false, no type conversion
(s1 !== i1) // true, no type conversion
但是,其他比较运算符没有等效的严格模式:
(s1 < i2) // true, type conversion
(s1 <= i2) // true, type conversion
([] < i2) // true, wait ... wat!?
显而易见的解决方案似乎非常冗长:
((typeof s1 === typeof i2) && (s1 < i2)) // false
在 Javascript 中是否有更惯用(或不那么冗长)的方式来做到这一点?
参考:MDN比较运算符