Überprüfen ob Variable existiert
Daniel89
- javascript
Hallo
Ich habe in einem String einen Variablennamen gespeichert.
Nun möchte ich überprüfen ob diese Variable bereits existiert.
zB.:
var x = "benutzer";
Nun möchte ich überprüfen ob die Variable benutzer bereits existiert oder nicht.
also mit if(x).. funktioniert es nicht, ist auch klar :) (gibt immer true aus)
danke
mfg Daniel
Hi,
Ich habe in einem String einen Variablennamen gespeichert.
Nun möchte ich überprüfen ob diese Variable bereits existiert.zB.:
var x = "benutzer";
Nun möchte ich überprüfen ob die Variable benutzer bereits existiert oder nicht.
Also suchst du das, was man in anderen Sprachen wie bspw. PHP unter dem Begriff „variable Variablen“ kennt.
also mit if(x).. funktioniert es nicht, ist auch klar :) (gibt immer true aus)
Natürlich, denn damit testest du ja die Variable x, und nicht benutzer.
In JavaScript sind Variablen Objekteigenschaften.
Globale Variablen sind im Browser-Kontext Eigenschaften von window.
benutzer === window["benutzer"] === window[x]
Um Abzufragen, ob die Variable überhaupt existiert, kannst du idR. den typeof-Operator verwenden.
Welche Sonderfälle es dabei ggf. zu beachten gibt, bzw. welche Detection-Methoden in Einzelfällen besser geeignet sein könnten, dazu kannst du mal im Archiv recherchieren, dazu gab es hier schon öfters Diskussionen; molily bspw. hat sich dazu schon des öfteren ausführlich geäußert.
MfG ChrisB
In JavaScript sind Variablen Objekteigenschaften.
Funktionsvariablen nicht, bzw. sie sind Eigenschaften eines nur internen Variablenobjekts. D.h. auf lokale Variablen kann man nicht direkt über variableobjekt['name'] zugreifen, dazu bräuchte man z.B. ein Object (Hash) im lokalen Scope.
Um Abzufragen, ob die Variable überhaupt existiert, kannst du idR. den typeof-Operator verwenden.
Welche Sonderfälle es dabei ggf. zu beachten gibt, bzw. welche Detection-Methoden in Einzelfällen besser geeignet sein könnten, dazu kannst du mal im Archiv recherchieren
Oder http://aktuell.de.selfhtml.org/artikel/javascript/objektabfragen/
Mathias
Hallo,
Oder http://aktuell.de.selfhtml.org/artikel/javascript/objektabfragen/
Dort gibt es leider ziemlich fehlerhaften Beispielcode:
if (zahl == NaN) {
// Umwandlung in String ergab keinen brauchbaren Wert.
return false;
}
Wie du wahrscheinlich weisst, ergibt ein Vergleich auf Gleichheit mit NaN
_immer_ false
.
Es gilt sogar (NaN == NaN) === false
bzw. (NaN != NaN) === true
.
Kannst du obiges nicht kuz berichtigen durch
if (isNaN(zahl)) {
// Umwandlung in String ergab keinen brauchbaren Wert.
return false;
}
~~~?
Es ist mir klar, dass der Text inzwischen nicht mehr gepflegt wird. Aber so ein fieser, für Anfänger kaum erkennbarer Fehler sollte wirklich nicht in einer sonst guten Abhandlung stehen bleiben, oder?
Gruß, Don P
... und meine Fehlerkonsole sagt "aler is not defined" :(
Na dann Prost!
ALEr
if (zahl == NaN) {
Danke, das werde ich natürlich berichtigen.
Es ist mir klar, dass der Text inzwischen nicht mehr gepflegt wird.
Ich pflege Artikel eigentlich immer was solche groben Fehler betrifft.
Mathias
Hallo,
Dort gibt es leider ziemlich fehlerhaften Beispielcode:
Eine überarbeitete Version mit vielen weiteren Korrekturen habe ich an die SELFHTML-Redaktion gesendet.
Mathias
Hallo
Ich habe in einem String einen Variablennamen gespeichert.
Nun möchte ich überprüfen ob diese Variable bereits existiert.zB.:
var x = "benutzer";
Nun möchte ich überprüfen ob die Variable benutzer bereits existiert oder nicht.
also mit if(x).. funktioniert es nicht, ist auch klar :) (gibt immer true aus)
danke
mfg Daniel
Ich habe es jetzt so gelöst:
x = "benutzer";
eval('if(typeof('+x+') == "undefined"){alert("VARIABLE ist nicht gesetzt");}else{alert("VARIABLE ist gesetzt");}');
@@Daniel89:
nuqneH
Ich habe es jetzt so gelöst:
Und warum? Warum benutzt du evil eval()
(was man meist vermeiden sollte), anstatt dir ChrisBs Antwort anzusehen?
Qapla'
Mahlzeit Daniel89,
Ich habe es jetzt so gelöst:
Nein, Du hast Dein Problem *NICHT* gelöst. Du hast es lediglich an eine andere - und IMHO gefährlichere - Stelle verlagert.
x = "benutzer";
eval('if(typeof('+x+') == "undefined"){alert("VARIABLE ist nicht gesetzt");}else{alert("VARIABLE ist gesetzt");}');
eval() is evil! Fast immer. Folge dem von ChrisB beschrieben Weg und vergiss (temporär), dass es so etwas Gefährliches wie eval() überhaupt gibt!
MfG,
EKKi