Cruz: Abfragen, ob Variable definiert ist?

Yello!

Wie kann ich denn Abfragen, ob eine Variable definiert ist oder nicht?

if (Object == "") geht schon mal nicht, weil er dann immer nur "Object is not defined" sagt. Ja gut, das wollte ich wissen, aber nicht unbedingt als Errormeldung. ;)

Also wie kann ich es rauskriegen, wenn ich keine if abfrage auf ein undefiniertes Object anwenden darf?

Gruß
Cruz

  1. Wie kann ich denn Abfragen, ob eine Variable definiert ist oder nicht?

    if (Object == "") geht schon mal nicht, weil er dann immer nur "Object is not defined" sagt. Ja gut, das wollte ich wissen, aber nicht unbedingt als Errormeldung. ;)

    Also wie kann ich es rauskriegen, wenn ich keine if abfrage auf ein undefiniertes Object anwenden darf?

    Hi Cruz,

    so geht es:  a wird erfragt

    function doit(){
        if (typeof(a)=="undefined"){
              alert("a ist nicht definiert");
        }
        else{
           alert ("a ist definiert - gut so");
        }
    }

    Gruß
    Timothy

    1. Hallo!

      function doit(){
          if (typeof(a)=="undefined"){
                alert("a ist nicht definiert");
          }
          else{
             alert ("a ist definiert - gut so");
          }
      }

      Wenn man ueberhaupt nichts ueber die Variable weiss, und wirklich wissen will, ob sie undefined ist, muss man diesen Weg wohl gehen. Normalerweise reicht aber auch ein einfaches

      if (object) ...

      Wenn object undefined ist, wird dann der if-Zweig nicht ausgefuehrt. Allerdings auch nicht, wenn diese Variable existiert, aber z.B. 0 (Number), false (Boolean), "" (string) oder null (object) ist. Wenn einen diese Sonderfaelle aber nicht interessieren, reicht diese kurze Form.

      So lange

      1. if (object) ...

        Wenn object undefined ist, wird dann der if-Zweig nicht ausgefuehrt. Allerdings auch nicht, wenn diese Variable existiert, aber z.B. 0 (Number), false (Boolean), "" (string) oder null (object) ist. Wenn einen diese Sonderfaelle aber nicht interessieren, reicht diese kurze Form.

        Hi,

        habe ich mal ausprobiert:

        if (a) {...} bringt die bekannte Systemmeldung

        Fehler: 'a' ist undefiniert.

        Und gerade diese Meldung will Cruz doch umgehen.

        Gruss
        Timothy

        1. Hi!

          if (a) {...} bringt die bekannte Systemmeldung
          Fehler: 'a' ist undefiniert.

          Mmh, das wundert mich jetzt aber. Tatsaechlich habe ich denselben Effekt. Wenn ich aber vorher schreibe

          a = undefined;

          dann geht das so in Ordnung. In beiden Faellen liefert typeof(a) aber undefined zurueck. Komisch, ich dachte immer undefined ist undefined? Aber offensichtlich gibt es einen Unterschied zwischen undefined weil als Wert zugewiesen und undefined weil noch nie benutzt.

          Trotzdem bringt
              if (window.a)
          bzw.
              if (window["a"])

          in beiden Faellen keinen Fehler. Will ich also eine Eigenschaft/Methode eines Objekts (gleichbedeutend mit Element eines Arrays) abfragen, funktioniert das Verfahren. Sonst koennte man ja keine Abfragen wie
              if (document.images)
          machen. Davon war ich naemlich urspruenglich ausgegegangen, und hatte keinen Grund gesehen, warum es auf dem Top level nicht genauso funzen sollte (schliesslich sind Variablen dort auch nur Eigenschaftenm des window-Objekts).

          Ich erinnere mich dunkel, dass Antje und ich vor langer Zeit das Thema schon mal hatten, aber wir sind nicht bis zum Ende gekommen. Findet sich sicher irgendwo im Archiv.

          So lange

          Ach ja, Cruz, alle JavaScript-"Befehle" findet man natuerlich bei Netscape. Die Standardlinks:

          http://developer.netscape.com/docs/manuals/javascript.html

          Und von dort aus z.B.

          http://developer.netscape.com/docs/manuals/js/client/jsguide/index.htm
          http://developer.netscape.com/docs/manuals/js/client/jsref/index.htm

    2. so geht es:  a wird erfragt

      function doit(){
          if (typeof(a)=="undefined"){
                alert("a ist nicht definiert");
          }
          else{
             alert ("a ist definiert - gut so");
          }
      }

      Hi Timothy,

      Ja so klappt es danke schön!
      die methode typeof habe ich allerdings nicht in Selfhtml gefunden, kennst du vielleicht eine Seite, wo mehr Javascript Befehle aufgelistet sind?

      Gruß
      Cruz

      1. die methode typeof habe ich allerdings nicht in Selfhtml gefunden, kennst du vielleicht eine Seite, wo mehr Javascript Befehle aufgelistet sind?

        Sorry,

        ich habe mir irgendwann mal irgendwo aus dem Netz eine Kurzreferenz (in englisch)runtergeladen. Und da habe ich dies gefunden. Allerdings weiss ich die URL nicht mehr. Wenn Du sie (die Kurzreferenz) haben willst - ich kann sie Dir schicken (etwa 1 MB gezippt .

        Gruss
        Timothy

        1. zu marcellm@integra-europe.de bitte!

          Danke schön
          Cruz

          1. Ist raus

            Schoenes Wochenende

            Timothy

      2. Hallo Cruz

        SELFHTML: < http://www.teamone.de/selfhtml/tebi.htm>

        Tschüs

        Daniel

  2. Hi Cruz,

    also es kommt immer darauf an, zu welchem Zeitpunkt die variable definiert wird.

    Ich habe einen einfachen "Trick" verwendet, um es zu umgehen. Deine Variable wird ganz am Anfang des Scripts vorbelegt, mit einem Wert, der später als Ergebnis nicht in frage kommt.

    Beispiel: deine Variable belegst du mit -1.

    Ich hoffe, in deinem Beispiel hilft das weiter. In meinem Problem hats geklappt.

    Gruß
    Thomas J.

    1. »»Deine Variable wird ganz am Anfang des Scripts vorbelegt, mit einem Wert, der später als Ergebnis nicht in frage kommt.

      Beispiel: deine Variable belegst du mit -1.

      »»

      Hi Thomas,

      geht auch - aber dann ist es am Besten, die Variable mit dem Wert null  vorzubelegen.

      Kann man dann abfragen mit  if (variable == null) ...

      Gruß
      Timothy