Najlepszy i / lub najkrótszy sposób wykonywania ścisłego (nietypowego konwertowania) <,>, <=,> = porównanie w Javascript
W Javascript:==
porównanie ma ścisłą (nietypową konwersję) wersję:===
. Również,!=
ma ścisłą formę!==
. Chronią cię przed następującym szaleństwem:
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
Jednak inne operatory porównania nie mają równoważnych trybów ścisłych:
(s1 < i2) // true, type conversion
(s1 <= i2) // true, type conversion
([] < i2) // true, wait ... wat!?
Oczywiste rozwiązanie wydaje się dość gadatliwe:
((typeof s1 === typeof i2) && (s1 < i2)) // false
Czy istnieje bardziej idiomatyczny (lub po prostu mniej gadatliwy) sposób wykonywania tego w JavaScript?
Odniesienie: MDNOperatory porównania