Mit dem ungetypten Vergleichsoperator ==
in Javascript sollte man schon vorsichtig sein. Dass 1 == "1"
ist, ist man wohl gewöhnt. Es ist oft sehr hilfreich und sorgt selten für Fehler. Aber es gibt echt skurrile Kandidaten, an deren True-sein man wohl eher nicht denken würde.
0 == ""
0 == []
1 == "1"
1 == " 1 "
"1" != " 1 "
1 == [1]
"aa" == ["aa"]
Vor allem, dass Arrays gleich ihrem einzigen Element sind, finde ich schon sehr irritierend. Auch beim String-Casting kann man beide nicht auseinanderhalten:
console.dir("" + 1); // "1"
console.dir("" + [1]); // "1"
Tja, Vergleichen will gelernt sein…
Deswegen versuche ich jetzt immer den getypten zu nehmen: ===
Da hast du wohl recht. Obwohl ich mich mit dem auch schon manches mal rumgeärgert habe. Leider weiß ich nicht mehr warum…