Wie gesagt, geht die direkte Typumwandlung zu Boolean true
/false
wie folgt:
• jeder nicht leere String ergibt
true
– auch wenn er nur Nullen enthält
• jedes existierende Objekt ergibttrue
– auch wenn es leer ist, d.h. keine Eigenschaften hat
• jede "echte" Zahl ungleich 0 ergibttrue
– auch wenn sie negativ ist
Aufpassen muss man allerdings bei Vergleichen von Zeichenketten mit ==
wie z.B.
if ( "000\n\t" == false ) alert( "000\n\t" == false ) /* true! */
Hier erfolgt intern zunächst eine Umwandlung zur Zahl, was für "000\n\t"
dann die Zahl 0 ergibt, und 0 gilt natürlich als false
, so dass "000\n\t" == false
wieder wahr wird.
Deshalb wird auch empfohlen, auf Vergleiche mit true
oder false
ganz zu verzichten, also nur if(wert)
zu notieren, bzw. !!wert
zu verwenden, wenn man z.B. in einer Zuweisung oder einem Ausdruck unbedingt einen booleschen Wert braucht:
var bool = !!wert;
Hier funktioniert die Umwandlung auf jeden Fall wie oben beschrieben.
Gruß, Don P