So prüfen Sie, ob in JavaScript undefiniert ist

Wenn eine Variable ohne Zuweisung eines Werts deklariert wird, lautet ihr Anfangswert undefined.

Wie können Sie überprüfen, ob ein Wert in JavaScript undefined ist?

Die kurze Antwort

In modernen Browsern können Sie die Variable sicher vergleichen direkt zu undefined:

Einige Leute sprechen sich gegen einen Vergleich mit undefined, weil alte Browser die Neuzuweisung des Werts wie folgt zuließen:

Nach dieser Neuzuweisung im Vergleich zu undefined würde direkt nicht mehr korrekt erkennen, ob einer Variablen ein Wert zugewiesen wurde.

Dieses Verhalten wurde jedoch 2009 mit ECMAScript 5 behoben:

In modernen Browsern “ Es ist nicht mehr möglich, den globalen Wert undefined neu zuzuweisen.

Was ist, wenn ich IE8 und älter unterstützen muss?

Im Allgemeinen direkt mit un vergleichen definiert ist immer noch sicher. Es gibt keinen praktischen Grund für eine Anwendung, den Wert von undefined neu zuzuweisen.

Thomas Eding demonstriert dies mit einer überzeugenden Analogie:

Wenn Sie immer noch besorgt sind, gibt es zwei Möglichkeiten, um zu überprüfen, ob ein Wert undefiniert ist, auch wenn das globale undefined überschrieben wurde.

Sie können das verwenden void-Operator zum Abrufen des Werts von undefined. Dies funktioniert auch dann, wenn der globale Wert window.undefined überschrieben wurde:

Die Null in diesem Beispiel hat keine besondere Bedeutung. Sie können auch 1 oder function(){}. void(anything) wertet immer undefined aus.

Alternativ können Sie den Operator typeof verwenden, um sicher zu prüfen, ob ein Wert vorliegt wurde beauftragt. Anstatt mit dem globalen Wert undefined zu vergleichen, überprüfen Sie, ob der Werttyp „undefiniert“ ist:

Beachten Sie, dass dies geringfügig von den vorherigen Optionen abweicht. Auch wenn name nicht deklariert wurde, würde typeof immer noch sagen, dass es undefiniert ist. Wenn Sie eine nicht deklarierte Variable mit undefined oder void(0) vergleichen, erhalten Sie stattdessen einen ReferenceError.

Aber nicht Verwenden Sie void (0) direkt.

Vermeiden Sie die Verwendung von void(0) oder typeof x === "undefined" wörtlich im Code. Diese Ausdrücke sind nicht selbsterklärend und sollten in eine isUndefined-Funktion wie diese eingeschlossen werden:

In vielen Dienstprogrammbibliotheken ist diese Funktionalität bereits integriert, z. B. gibt es eine _.isUndefined Funktion in Underscore.js.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.