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