Calocybe: Fehlermeldungen im Allgemeinen...

Beitrag lesen

Hallo Antje!

weiterhin kann man auch die Existenz von Variablen etc. abfragen und damit Fehlermeldungen vorbeugen.

Von Variablen, wirklich? Die Moeglichkeit, die Existenz von Funktionen/Methoden abzufragen, ist mir ja bekannt. So testet z.B.
    if (window.focus) then window.focus();
erst mal, ob die focus()-Methode beim window-Objekt ueberhaupt implementiert ist, und falls ja, wird diese ausgefuehrt. Man beachte hier die fehlenden Klammern hinter focus innerhalb der if-Bedingung. Haette ich die Klammern hingeschrieben, so hiesse das, der Rueckgabewert (den es bei focus() gar nicht gibt) wuerde ausgewertet werden und falls er einen Wert ungleich 0, also True, ergibt, wird die im True-Zweig stehende(n) Anweisung(en) ausgefuehrt.

Wenn ich aber in der gleichen Weise eine Variable pruefe, dann erwarte ich vom JS-Interpreter nicht die Feststellung, ob die denn ueberhaupt existiert, sondern ich nehme einfach an, dass sie existiert und verlange eine ordentliche Auswertung des Variableninhalts. Wenn ich also frage
    if (window.document.MyForm.MyDropDownBox.options[2].selected)  alert("Hallo");
soll genau dann eine Messagebox aufgeblendet werden, wenn die 3. Option (Index 2) aus einer bestimmten Drop-Down-Box in einem Formular ausgewaehlt ist. (Oft wird die Schreibweise
    if (xxxx.selected == true)  mach_was();    verwendet, aber das ist doppelt-gemoppelt, denn es wird letztlich abhaengig vom selected-Status entweder
    if (true == true)    oder    if (false == true)    abgefragt. In beiden Faellen ist das Ergebnis jeweils der eigentliche selected-Status. Aber manche finden es einfach uebersichtlicher so.)

Dies laesst nun vermuten, dass ein JS-Fehler entstehen muesste, falls eine Variable abgefragt wird, die es gar nicht gibt. Das ist aber nach meiner Erfahrung nicht so. Das heisst nun entweder, dass ich unrecht habe (dass also in der Tat die Existenz der Variable abgefragt wird und nicht deren Wert), oder dass die Nicht-Existenz der Variable als gleichbedeutend mit 'Variable ist false' angesehen wird. Im ersten Fall muesste eine If-Abfrage letztlich zu True ausgewertet werden, wenn ich eine Variable abfrage, die existent ist und den Wert 0 hat (denn die Variable existiert ja). Im zweiten Fall muesste dieselbe Abfrage zu False ausgewertet werden (denn die Variable hat den Wert 0, was gleichbedeutend mit false ist). Wer mag, kann ein Script schreiben, das ueberprueft, was nun Sache ist.

So, viel theoretisiert, eigentlich wollte ich ja nur sagen, dass ich glaube, die Existenz von Variablen laesst sich so nicht feststellen. ;-)

Calocybe