В 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 Операторы сравнения