Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 94
Strikte Gleichheit
ОглавлениеDer strikte Gleichheitsoperator === wertet seine Operanden aus und vergleicht die beiden Werte dann folgendermaßen, ohne eine Typumwandlung durchzuführen:
Die Werte sind nicht gleich, wenn sie unterschiedliche Typen haben.
Die Werte sind gleich, wenn beide null oder beide undefined sind.
Die Werte sind gleich, wenn beide den booleschen Wert true oder beide den booleschen Wert false haben.
Die Werte sind nicht gleich, wenn einer NaN ist oder beide es sind. (Es mag überraschend erscheinen, aber der NaN-Wert ist keinem anderen Wert gleich, nicht einmal sich selbst! Um zu prüfen, ob ein Wert x gleich NaN ist, können Sie den Ausdruck x !== x oder die globale Funktion isNaN() verwenden.)
Die Werte sind gleich, wenn beide Zahlen sind und den gleichen Wert haben. Sie sind ebenfalls gleich, wenn einer der Werte 0 und der andere -0 ist.
Die Werte sind gleich, wenn beide Strings sind und genau die gleichen 16-Bit-Werte (siehe den Kasten in 3.3) an genau den gleichen Positionen enthalten. Sie sind nicht gleich, wenn sie eine unterschiedliche Länge oder einen unterschiedlichen Inhalt haben. Zwei Strings können die gleiche Bedeutung und die gleiche Darstellung haben, aber dennoch mit unterschiedlichen Folgen von 16-Bit-Werten codiert sein. JavaScript führt keine Unicode-Normalisierung durch, und derartige Strings sind weder für den ===- noch für den ==-Operator gleich.
Die Werte sind gleich, wenn beide auf dasselbe Objekt, dasselbe Array oder dieselbe Funktion verweisen. Verweisen sie auf unterschiedliche Objekte, sind sie nicht gleich, selbst wenn beide Objekte gleiche Eigenschaften besitzen.