Javascript: Auf undefined bzw. null prüfen (isset mit JS)

So können Sie ein isset in Javascript implementieren um zu überprüfen, ob Variablen tatsächlich gesetzt sind.

In Javascript ist es manchmal auch wichtg sicherzustellen, dass Variablen gesetzt sind. Leider ist das nämlich nicht immer der Fall. Leider ist das in Javascript auch nicht so ganz einfach, denn anders als in PHP sind die Variablen dann nicht null, sondern “undefined”.

if(typeof a === "undefined")

Hier wird einfach überprüft, ob die Variable a vom Typ undefined ist, dass bedeutet dann, dass die Variable nicht vorhanden bzw. gesetzt ist.

Man könnte daraus ein kleine Funktion bauen, die man dann immer wieder nutzen kann. Wir folgen einfach mal dem Beispiel von PHP und nennen die Funktion isset() mit der Variablen als Parameter:

function isset($v) {

  return (typeof v !== "undefined");

}

Habt Ihr andere Möglichkeiten oder Lösungen, um in Javascript Variablen zu überprüfen?


0 0 0


Diskussion

avatar placeholder
13. Juli 2014 von Max

Hi Tobias,

du hast einen kleinen Schreibfehler in deiner isset-Funktion. Es muss heißen:

function isset(v) {
return (typeof v === “undefined”);
}

Beste Grüße
Max

avatar placeholder
14. Juli 2014 von Tobias Redmann

Danke Max. Ich habe es entsprechend angepasst!

avatar placeholder
3. März 2017 von Marina

Servus. Komme mit dem “typeoff” nicht weiter.
Im Grunde möchte ich sagen: Wenn die Variable kleiner ist als 22: nimm x

Nicht immer ist sie definiert. Deshalb muss ich es abfangen. Erhalte aber dennoch undefined anstatt des Wertes:

case (typeof(data.DiffDate)==’undefined’):
return this.html(data.name);

case (data.DiffDate)< 22:
return this.html(data.name)+" DL in: "+ this.html(data.DiffDate);

case 'undefined':
return this.html(data.name);

Nehme ich aber:

case '21':
return this.html(data.name);

So erfolgt die Ausgabe bei den Datensätzen die GENAU 21 entsprechen korrekt.

Würd für die Hilfe nen Zwanni paypalen…

avatar placeholder
13. Feb. 2019 von Actron

Dummerweise nur in einem Codeblock angepasst…

Einmal mit Profis arbeiten!

avatar placeholder
15. Jan. 2020 von ejomi

Nicht so schnell! Auch wenn die modernen JS-Parser diesen Unsinn mitmachen ist es vom logischen falsch und wird von älteren Browsern oder auch im “strict-Modus” (zu Recht) nicht akzeptiert: Eine Variable die nicht definiert ist, kann nämlich logischerweise nicht an eine Funktion übergeben werden – die “not defined”-Exception wird vom JS-Interpreter bereits ausgelöst, noch bevor die Funktion überhaupt in Aktion treten kann!
Schlimmer noch: Es wird leider auch nicht in allen Konstellationen ein “undefined” zurückgegeben (z.b. wenn globale Variablen script-übergreifend verwendet werden)! Wirklich robust ist nur eine direkte Inline-Abfrage auf den erwarteten Objekt-Typ – also eine Positiv-Abfrage. Neben dem unschönen Objekttyp “undefined” können nämlich auch die Typen “object”, “boolean”, “number”, “string” und “function” sehr elegant abgefragt werden. Wird der erwartete Typ nicht gefunden, kann davon ausgegangen werden, das auch die Variable nicht existiert. … und selbst wenn: Sie wäre für den gedachten Zweck sowieso unbrauchbar!
Beispiel: if (typeof Existenz != “boolean”) alert(“Eine Nicht-Existenz!”);
Ein fataler Fehler ist es übrigens, die fragliche Variable bei Nicht-Existenz nachträglich zu deklarieren!! Je nach Browser-Typ erkennt der JS-Parser diese Deklaration bereits in Voraus – selbst wenn sie an eine Bedingung geknüpft ist. Die “Nicht-Existenz-Abfrage” gibt dann im schlimmsten Fall immer nur ein “TRUE” zurück, weil es die Variable ja bereits irgendwo im Script gibt!!! Fazit: Für die eigentliche Arbeit im Script immer erst eine lokale Variable mit einem vordefinierten Inhalt anlegen. Wenn die abzuprüfende (defined/undefined) Variable vorhanden ist, deren Inhalt in die lokale Arbeitsvariable kopieren. Der weitere Verlauf des Skripts dann nur vom Inhalt der lokalen Arbeitsvariable abhängig machen und von sonst gar nichts. Das nennt man “robuste” Programmierung!

Mitdiskutieren

*