JS undefined
Paul
- javascript
Moin,
warum bekomme ich ein "gibts" als Ausgabe, wenn mir das erste alert ein undefined gibt?
function validateInput(field, input) {
alert(field);
if(field == undefined) alert("neu");
else alert("gibts");
}
Paul
Hallo Paul,
kennst du schon http://de.selfhtml.org/javascript/sprache/operatoren.htm#typeof@title=typeof?
Gruß, Jürgen
Hallo Paul,
kennst du schon http://de.selfhtml.org/javascript/sprache/operatoren.htm#typeof@title=typeof?
Gruß, Jürgen
Danke
function validateInput(field, input) {
alert(field);
if(field == undefined) alert("neu");
else alert("gibts");
}
Besser wäre:
~~~javascript
if(field) alert("neu");
else alert("gibts");
Struppi.
Hallo Struppi,
Besser wäre:
if(field) alert("neu");
else alert("gibts");
versagt aber, wenn field den Wert 0 hat. Bei solchen Konstruktionen muss man schon die Umstände genau kennen.
Gruß, Jürgen
Besser wäre:
if(field) alert("neu");
else alert("gibts");
>
> versagt aber, wenn field den Wert 0 hat. Bei solchen Konstruktionen muss man schon die Umstände genau kennen.
Es versagt nicht unbedingt, wenn field eine Zahl ist, sollte sie auf jeden Fall initialisiert werden und auf keinen Fall undefiniert sein. Eine Unterscheidung 0 <=> undefined ist i.d.R. nicht sinnvoll, wenn man schon sowas braucht sollte man null benutzen.
Struppi.
Hallo Struppi,
wenn aber bei
if(x) ...
else ...
der else-Zweig durchlaufen wird, kann das daran liegen, dass x den Wert 0 oder false hat, kann aber auch daran liegen, das x nicht definiert ist. Daher prüfe ich die Existenz lieber mit typeof. Sicher ist so eine Konstruktion nur, wenn nicht existieren und Wert 0 oder false gleichwertig sind. Oder anders herum
if(x) ...
ist nur sinnvoll, wenn für die Ausführung x existieren und im if den Wert true haben muss.
Ich spreche das deswegen an, weil ich damit mal reingefallen bin. Ich habe in einem Script den Fall, dass ich eine Variable nur benutze, wenn sie existiert, sonst greife ich auf einen Defaultwert zu. Diese Variable kann auch den Wert false haben der Defaultwert ist aber true.
Gruß, Jürgen
Ich spreche das deswegen an, weil ich damit mal reingefallen bin. Ich habe in einem Script den Fall, dass ich eine Variable nur benutze, wenn sie existiert, sonst greife ich auf einen Defaultwert zu. Diese Variable kann auch den Wert false haben der Defaultwert ist aber true.
Ich halte es für Problematisch, wenn eine Variabel den Typ wechseln kann. Wenn aber z.b. ein Parameter optional ist, dann ist natürlich der Test auf undefined der richtige Weg. Ansonsten sollte der einfache Vergleich ausreichen. Zumal du damit nicht in die Fallen der Typkonvertierung tappen kannst http://forum.de.selfhtml.org/archiv/2009/10/t192110/#m1281687
Struppi.
warum bekomme ich ein "gibts" als Ausgabe, wenn mir das erste alert ein undefined gibt?
Das kann nicht sein, da musst du dich täuschen. Wenn field wirklich vom Typ undefined ist (typeof field == 'undefined'), dann kann es nicht sein, dass er in den Else-Zweig springt.
function validateInput(field, input) {
alert(field);
if(field == undefined) alert("neu");
else alert("gibts");
}
Welche Werte übergibst du denn der Funktion?
Wenn die Funktion keinen field-Parameter bekommt, also einfach validateInput() aufgerufen wird, dann ist field gleich undefined und es wird »neu« ausgegeben. Bei allen Browsern, die ich getestet habe.
Auch wenn du null übergibst (was z.B. getElementById und andere DOM-Methoden zurückgeben, wenn sie die gewünschten Elemente nicht finden), dann sollte »neu« ausgegeben werden, denn null ist auch gleich undefined.
Mathias