Ich wollte überprüfen, ob die Variable definiert ist oder nicht. Zum Beispiel wirft das Folgende einen Fehler, dass es nicht definiert ist
alert( x );
Wie kann ich diesen Fehler abfangen?
Ich wollte überprüfen, ob die Variable definiert ist oder nicht. Zum Beispiel wirft das Folgende einen Fehler, dass es nicht definiert ist
alert( x );
Wie kann ich diesen Fehler abfangen?
In JavaScript ist null
ein Objekt. Es gibt einen anderen Wert für Dinge, die nicht existieren, undefined
. Das DOM gibt für fast alle Fälle, in denen es nicht gelingt, eine Struktur im Dokument zu finden, null
zurück, aber in JavaScript selbst wird undefined
verwendet.
Zweitens, nein, es gibt keine direkte Äquivalenz. Wenn Sie wirklich speziell auf null
überprüfen möchten, tun Sie dies:
if (yourvar === null) // Wird nicht ausgeführt, wenn yourvar `undefined` ist
Wenn Sie überprüfen möchten, ob eine Variable existiert, kann dies nur mit try
/catch
erfolgen, da typeof
eine nicht deklarierte Variable und eine mit dem Wert von undefined
deklarierte Variable als gleich behandelt.
Aber, um zu überprüfen, ob eine Variable deklariert ist und nicht undefined
ist:
if (yourvar !== undefined) // Jeder Bereich
Zuvor war es notwendig, den typeof
-Operator sicher zu verwenden, um auf sicherem Weg nach undefined
suchen, da es möglich war, undefined
genauso wie eine Variable neu zuzuweisen. Der alte Weg sah so aus:
if (typeof yourvar !== 'undefined') // Jeder Bereich
Das Problem, dass undefined
neu zugewiesen werden konnte, wurde in ECMAScript 5 behoben, das 2009 veröffentlicht wurde. Sie können jetzt sicher ===
und !==
verwenden, um auf undefined
zu testen, ohne typeof
zu verwenden, da undefined
seit einiger Zeit schreibgeschützt ist.
Wenn Sie wissen möchten, ob ein Element unabhängig davon existiert, aber sich nicht um seinen Wert kümmern:
if ('membername' in object) // Mit Vererbung
if (object.hasOwnProperty('membername')) // Ohne Vererbung
Wenn Sie wissen möchten, ob eine Variable wahr ist:
if (yourvar)
Undefined ist kein reserviertes Wort; Sie (oder der Code einer anderen Person) können "undefined = 3" eingeben, und das wird zwei Ihrer Tests zum Scheitern bringen.
"Wenn du weißt, dass die Variable existiert, aber nicht weißt, ob ein Wert darin gespeichert ist" - huh?!
Ich denke, er bezieht sich auf eine deklarierte Variable, die nicht zugewiesen wurde. z.B .: var foo; // foo existiert, hat aber keinen Wert
Der einzige Weg, um wirklich zu testen, ob eine Variable undefined
ist, besteht darin, folgendes zu tun. Denken Sie daran, dass undefined ein Objekt in JavaScript ist.
if (typeof someVar === 'undefined') {
// Ihre Variable ist undefined
}
Einige der anderen Lösungen in diesem Thread lassen Sie glauben, dass eine Variable undefined ist, obwohl sie definiert wurde (zum Beispiel mit einem Wert von NULL oder 0).
Weil die Frage hier nicht UNDEFINED lautet, sollte typeof someVar !== 'undefined' sein, oder?
Wirklich, ich glaube nicht, dass undefinded ein Objekt ist, überprüfen Sie zuerst die Dokumentation developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
Wenn Sie var x;
eingeben und dann typeof x;
eingeben, erhalten Sie "undefined"
, genauso wie wenn Sie typeof lakjdflkdsjflsj;
gemacht hätten.
Also gibt es keine Möglichkeit, auf eine nicht definierte, aber deklarierte Variable zu überprüfen?
Der erste Codeabschnitt kann inkorrekt sein, wenn x aus einem Funktionsaufruf gesetzt wird. wie x = A(); Wenn A nichts zurückgibt, wird standardmäßig "undefined" zurückgegeben. Das Ausführen von !x wäre also wahr, was logisch korrekt wäre. Wenn jedoch A() 0 zurückgibt, sollte !x falsch sein, da x=0. Allerdings ist in JS auch !0 wahr.
@AlejandroSilva Entschuldigung für die verspätete Antwort. Das wird nicht funktionieren, da typeof einen String zurückgibt. Daher wird es für eine nicht definierte Variable 'undefined' zurückgeben, was wiederum als TRUE ausgewertet wird und somit zu einem falsch positiven Wert für eine definierte Variable führt.
Bitte erwägen Sie, "==" in "===" zu ändern. Wenn Sie doSomething(null) aufrufen, erhalten Sie auch den Hinweis. Es sei denn, das ist das, was Sie wollen.
Ja. Du musst entscheiden, ob du äquivalent oder genau gleich haben möchtest. In beiden Fällen könnte es nützlich sein.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
http://stackoverflow.com/questions/519145/how-to-check-whether-a-javascript-variable-defined/519157#519157
5 Stimmen
Sieht aus wie ein Urgroßvater: stackoverflow.com/questions/1485840/… stackoverflow.com/questions/2647867/… - vielleicht ist das der Uropa: stackoverflow.com/questions/27509/…
1 Stimmen
Dies ist keine Kopie der markierten Kopie. Die Auflösung von Variablen und die Auflösung von Objekteigenschaften sind sehr unterschiedliche Dinge. Eine bessere Kopie ist wie man überprüft, ob eine Variable in Javascript existiert?.
0 Stimmen
Dein Fehler liegt daran, dass die Variable nicht deklariert wurde. Die meisten Antworten konzentrieren sich auf Zuweisungen. Siehe meine Antwort für mehr. Darüber hinaus behaupten viele von ihnen fälschlicherweise, dass null und undefined Objekte in JavaScript sind. Sie sind Primitivtypen, keine Objekte...