Die beste Vorgehensweise: Variable nicht vorhanden
TS
- javascript
- meinung
Hello,
ich möchte mal eine Frage in den Raum stellen, die ich alleine nicht lösen mag, weil mir dazu nicht alle Argumente für und wider bekannt sind:
Wie prüft man in JavaScript am besten, ob eine Variable bereits deklariert (und initialisiert) ist?
siehe auch MDN
und Stackoverflow ist voll mit Diskussionen dazu, aber auch da gibts nicht wirklich die richtige™️ Methode
Liebe Grüße
Tom S.
Tach!
Wie prüft man in JavaScript am besten, ob eine Variable bereits deklariert (und initialisiert) ist?
Prüfen auf undefined - ist auch eine der Möglichkeiten.
und Stackoverflow ist voll mit Diskussionen dazu, aber auch da gibts nicht wirklich die richtige™️ Methode
Vermutlich weil je nach Situation auch andere Vorgehensweisen sinnvoll sind. Die Suche nach dem heiligen Gral, um den selbst auf Teufel komm raus anzuwenden, finde ich nicht sinnvoll. Besser ist, die Möglichkeiten zu kennen und diese nach der Aufgabenstellung zu bewerten.
dedlfix.
Hello,
Prüfen auf undefined - ist auch eine der Möglichkeiten.
Ja, aber ...
und Stackoverflow ist voll mit Diskussionen dazu, aber auch da gibts nicht wirklich die richtige™️ Methode
Vermutlich weil je nach Situation auch andere Vorgehensweisen sinnvoll sind. Die Suche nach dem heiligen Gral, um den selbst auf Teufel komm raus anzuwenden, finde ich nicht sinnvoll. Besser ist, die Möglichkeiten zu kennen und diese nach der Aufgabenstellung zu bewerten.
Ich suche nur nach den Vorgehensweisen mit den wenigsten "Ja, aber"s.
Liebe Grüße
Tom S.
Tach!
Ich suche nur nach den Vorgehensweisen mit den wenigsten "Ja, aber"s.
Dann ist undefined wohl die beste Methode. Vor allem auch, weil beim Lesen des Quelltextes klar werden sollte, was gemeint ist.
if (variable == undefined)
Meinetwegen auch mit ===
, aber außer null
ergibt kein anderer Typ beim ==
-Vergleich true. null
als Inhalt ist in den meisten Fällen gleichwertig zu undefined
.
dedlfix.
Hallo,
if (variable == undefined)
wäre das dann das Gleiche wie if (typeof(variable) == "undefined")
?
Gruß
Jürgen
Hello,
if (variable == undefined)
wäre das dann das Gleiche wie
if (typeof(variable) == "undefined")
?
Das wäre auch meine Frage. Es besteht die (von mir bisher nicht überprüfte) Meinung, dass man eine Variable mit dem Namen 'undefined' definieren/umdefinieren könnte. Das wäre dann mMn gleichbedeutend damit, als wenn man in Pascal das 'NIL' umdefinieren könnte. Damit wäre es unsicher.
Liebe Grüße
Tom S.
Tach!
Es besteht die (von mir bisher nicht überprüfte) Meinung, dass man eine Variable mit dem Namen 'undefined' definieren/umdefinieren könnte.
Nein, undefined
ist im globalen Scope nicht beschreibbar.
dedlfix.
Tach!
if (variable == undefined)
wäre das dann das Gleiche wie
if (typeof(variable) == "undefined")
?
Im Prinzip ja. Ich merke gerade, dass das obige Konstrukt nur anwendbar ist, wenn man es innerhalb einer Funktion verwendet, die einen Parameter mit dem Namen der Variablen hat.
(function (foo) {
console.log(foo == undefined);
})();
Auf eine völlig unerwähnte Variable zu prüfen, ergibt einen Fehler. Der typeof-Test hingegen läuft problemlos.
Auf das Vorhandensein einer Variable im globalen Scope prüfen zu wollen, ist aber wohl eher Ergebnis schlechten Programmdesigns. In selbst erstellen Scopes sollte das nicht vorkommen, außer in Funktionsaufrufen, bei denen das Weglassen-Können der Parameter beabsichtigt ist.
dedlfix.
Wenn's um globale Variablen geht, was ist mit
if (window.hasOwnProperty("foo")) ...
Witzigerweise hat window.hasOwnProperty("undefined") den Wert true
:)
Rolf
Tach!
Witzigerweise hat window.hasOwnProperty("undefined") den Wert
true
:)
Wieso witzigerweise? undefined ist eine Property vom global object, das im Browser windows ist.
dedlfix.
Hallo dedlfix,
Wieso witzigerweise? undefined ist eine Property vom global object, das im Browser windows ist.
Hihi, toller freudscher. Zum Glück ist das nicht wahr und es ist window
😂
LG,
CK
use strict; hätte ich da noch anzubieten. MfG
Hallo!
Wie prüft man in JavaScript am besten, ob eine Variable bereits deklariert (und initialisiert) ist?
Dieser Selfartikel beschäftigt sich mit der Frage:
https://wiki.selfhtml.org/wiki/JavaScript/Objektabfragen
Grüße Kollenda
Hallo,
in diesem Artikel wird auch try - catch erwähnt. Ich verwende diese Technik, wenn eine Methode zwar existiert, aber nicht in allen Browsern mit allen Parametern umgehen kann. Hier ein Beispiel mit querySelector und einem „komplizierten“ Selector:
var kannScope = false;
try {
var t1 = document.body.appendChild(document.createElement("div"));
var t2 = document.body.querySelector(':scope > div');
kannScope = true;
document.body.removeChild(t1);
}
catch(e) {}
Gruß
Jürgen