Aber aber, Felix!
if (wert) {...}
Hier wird [...] ein String mit "0" (auch mehrere Nullen), eine "echte" Zahl null (oder negativ), [...] ein leeres Objekt [...] als _nicht_ zutreffend erkannt.
Das stimmt nicht.
Dagegen wird eine Zahl größer null, ein nicht leerer String (der nicht ausschließlich aus 0-Ziffern besteht!), irgendein Objekt mit mindestens einer Eigenschaft oder Methode [...] als zutreffend erkannt.
Das stimmt so auch nicht.
Wer hat dir nur diese falschen Aussagen auch noch als "fachlich hilfreich" markiert?
Beim Auswerten einer Zeichenkette als wahr/falsch mit if (wert) {...}
gilt vielmehr folgendes:
• 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
Beweis:
if ( "0" ) alert( !!"0" ); /* true */
if ( {} ) alert( !!{} ); /* true */
if ( -1 ) alert( !!-1 ); /* true */
Gruß, Don P