Javascript: 1 == [1]

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…

2 Kommentare

Kommentare sind geschlossen.