Ich wollte überprüfen, ob die Variable definiert ist oder nicht. Im Folgenden wird beispielsweise ein nicht definierter Fehler ausgegeben
alert( x );
Wie kann ich diesen Fehler abfangen?
javascript
variables
undefined
Jineesh
quelle
quelle
Antworten:
In JavaScript
null
ist ein Objekt. Es gibt einen anderen Wert für Dinge, die es nicht gibtundefined
. Das DOM gibtnull
in fast allen Fällen zurück, in denen es keine Struktur im Dokument findet, aber in JavaScript selbstundefined
wird der Wert verwendet.Zweitens, nein, es gibt kein direktes Äquivalent. Wenn Sie wirklich speziell nach suchen möchten, gehen Sie wie folgt vor
null
:Wenn Sie überprüfen möchten, ob eine Variable vorhanden ist, können Sie dies nur mit
try
/ tuncatch
, datypeof
eine nicht deklarierte Variable und eine mit dem Wert deklarierte Variableundefined
als äquivalent behandelt werden.Um zu überprüfen, ob eine Variable deklariert ist und nicht
undefined
:Bisher musste der
typeof
Operator verwendet werden, um sicher nach undefiniert zu suchen, da eine Neuzuweisungundefined
wie bei einer Variablen möglich war. Der alte Weg sah so aus:Das Problem der
undefined
Neuzuweisung wurde in ECMAScript 5 behoben, das 2009 veröffentlicht wurde. Sie können es jetzt sicher verwenden===
und!==
testen,undefined
ohne es zu verwenden,typeof
daundefined
es seit einiger Zeit schreibgeschützt ist.Wenn Sie wissen möchten, ob ein Mitglied unabhängig existiert, sich aber nicht darum kümmern, welchen Wert es hat:
Wenn Sie wissen möchten, ob eine Variable wahr ist :
Quelle
quelle
typeof
Operator (typeof null == 'object'
) der Schuldige dieses Missverständnisses . Dernull
Wert ist ein primitiver Wert , der der einzige Wert vom Typ Null ist .Der einzige Weg, um wirklich zu testen, ob eine Variable besteht,
undefined
besteht darin, Folgendes zu tun. Denken Sie daran, undefiniert ist ein Objekt in JavaScript.Einige der anderen Lösungen in diesem Thread lassen Sie glauben, dass eine Variable undefiniert ist, obwohl sie definiert wurde (z. B. mit dem Wert NULL oder 0).
quelle
ReferenceError
.undefined
ein Objekt in Javascript ist eine Fehlinformation. Bezieht sich diese Aussage trotzdem auf Ihre Antwort? Dies ist ein Wertundefined
vom Typundefined
, der dem genannten globalen Bezeichner zugewiesen istundefined
.undefined
wurde nur seit ES5 gelesen. Sie könnenif (x === undefined) {...}
mit der folgenden Kurzform sicher auf undefiniert testen :if (x === void 0)
.Technisch gesehen ist die richtige Lösung (glaube ich):
Sie können manchmal faul werden und verwenden
Dadurch können jedoch sowohl eine undefinierte Variable x als auch eine Variable x, die null enthält, true zurückgeben.
quelle
var x;
und dann werdentypeof x;
Sie"undefined"
genau so, wie Sie es getan habentypeof lakjdflkdsjflsj;
Eine noch einfachere und kürzere Version wäre:
ODER
quelle
Ich habe oft getan:
quelle
Sie können auch den ternären Bedingungsoperator verwenden:
quelle
var a = false;
? Sie sollten das überprüfen, wenna===undefined
stattdessenvar x;
Wenn Sie oben tun, wird ein Fehler!a
wahr fürundefined
, sondern auch wahr für0
undnull
undfalse
. Dies ist sehr falsch und sollte entfernt werden.Ich benutze oft den einfachsten Weg:
BEARBEITEN:
Ohne Initialisierung der Variablen wird die Ausnahme "Uncaught ReferenceError: Variable ist nicht definiert ..." ausgelöst.
quelle
Uncaught ReferenceError: variable is not defined
variable
ist definiert durchvar variable;
. Und dieses Snippet wirdvariable
im lokalen Bereich überschrieben . Es kann die Logik unterbrechen, die den Zugriff auf einen Abschluss oder eine globale Variable erwartet. Dh:var variable = 1; function test() { var variable; if (variable === undefined){ console.log('Variable is undefined'); } else { console.log('Variable is defined: ' + variable); } } test(); // Variable is undefined
Eine andere mögliche "Lösung" besteht darin, das
window
Objekt zu verwenden. Es vermeidet das Referenzfehlerproblem in einem Browser.quelle
undefined
. Das wird das nicht tun.Der Fehler sagt Ihnen, dass
x
es nicht einmal existiert! Es wurde nicht deklariert , was sich von der Zuweisung eines Werts unterscheidet.Wenn Sie deklarieren
x
, erhalten Sie keinen Fehler. Sie erhalten eine Warnung, die besagt,undefined
dassx
vorhanden / deklariert wurde, aber kein Wert zugewiesen wurde.Um zu überprüfen, ob die Variable deklariert wurde, können Sie mit
typeof
jeder anderen Methode überprüfen, ob eine Variable vorhanden ist, denselben Fehler auslösen, den Sie ursprünglich erhalten haben.Hiermit wird der Typ des in gespeicherten Werts überprüft
x
. Es wird nur zurückkehren ,undefined
wennx
nicht erklärt worden ist oder wenn es wurde erklärt worden und wurde noch nicht zugeordnet.quelle
typeof
Operator nicht mehr .Der
void
Operator gibtundefined
für jedes an ihn übergebene Argument / Ausdruck zurück. Sie können also anhand des Ergebnisses testen (tatsächlich ändern einige Minifizierer Ihren Code vonundefined
invoid 0
, um ein paar Zeichen zu speichern).Zum Beispiel:
quelle
typeof
und das Denkenundefined
kann neu zugewiesen werden, was seit etwa einem Jahrzehnt nicht mehr möglich war.undefined
, denn Gott weiß nur, aus welchem Grund, wird die Verwendungvoid 0
immer zurückkehren,undefined
unabhängig davon.Wir können
undefined
Folgendes überprüfenquelle
Mach einfach so etwas wie unten:
und nenne es wie:
quelle
Die akzeptierte Antwort ist richtig. Ich wollte nur noch eine Option hinzufügen. Sie können
try ... catch
Block auch verwenden , um diese Situation zu behandeln. Ein verrücktes Beispiel:Beachten Sie den
catch
Block, der etwas chaotisch ist, da er einen Bereich auf Blockebene erstellt. Und natürlich ist das Beispiel extrem vereinfacht, um die gestellte Frage zu beantworten. Es behandelt keine Best Practices bei der Fehlerbehandlung;).quelle
Ich verwende eine kleine Funktion, um zu überprüfen, ob eine Variable deklariert wurde, wodurch die Unordnung in meinen Javascript-Dateien erheblich verringert wird. Ich füge eine Prüfung für den Wert hinzu, um sicherzustellen, dass die Variable nicht nur existiert, sondern auch einen Wert erhalten hat. Die zweite Bedingung prüft, ob die Variable ebenfalls instanziiert wurde. Wenn die Variable definiert, aber nicht instanziiert wurde (siehe Beispiel unten), wird immer noch ein Fehler ausgegeben, wenn Sie versuchen, auf ihren Wert in Ihrem Code zu verweisen.
Nicht instanziiert - Instanziiert
var my_variable;
-var my_variable = "";
Sie können dann eine bedingte Anweisung verwenden, um zu testen, ob die Variable wie folgt definiert UND instanziiert wurde ...
oder um zu testen, ob es nicht definiert und instanziiert wurde ...
quelle
return typeof el !== "undefined" && typeof el.val() !== "undefined"