Daniel89: Überprüfen ob Variable existiert

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

  1. 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

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. 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

      1. 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
        
        1. ... und meine Fehlerkonsole sagt "aler is not defined" :(
          Na dann Prost!

          ALEr

        2. 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

        3. Hallo,

          Dort gibt es leider ziemlich fehlerhaften Beispielcode:

          Eine überarbeitete Version mit vielen weiteren Korrekturen habe ich an die SELFHTML-Redaktion gesendet.

          Mathias

  2. 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");}');  
      
    
    
    1. @@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'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
    2. 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

      --
      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|