Don P: Automatische Typumwandlung

Beitrag lesen

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 ergibt true – auch wenn es leer ist, d.h. keine Eigenschaften hat
• jede "echte" Zahl ungleich 0 ergibt true – 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