mbr: Einfache IF-Abfrage funktioniert nicht... warum?

Beitrag lesen

Hallo "Der Martin",

Auch in Javascript kann das sehr unerwartete Ergebnisse liefern - vor allem dann, wenn der erste Operand tatsächlich ein String ist, der Programmierer aber mit seinen Gedanken bei einem Zahlenwert ist:

if (document.forms[...].age.value<"6")

Hier mag sich der Programmierer irgendwann fragen, warum die Abfrage zutrifft, obwohl er doch im Testlauf 18 eingegeben hat, was ganz sicher größer als 4 ist.

URGS!

  
alert("18" < "4");   //true !  
alert("18" < 4);     //false  
alert(18 < "4");     //false  
alert(18 < 4);       //false  

kleine Ergänzung: und da .value ja immer strings zurückgibt... Aber ich mußte auch erst testen, was du meinst, weil mir wiederum nicht klar war, dass JS auch Strings direkt vergleicht. Ich hatte irgendwie erwartet, dass zuerst aus "18" ein Integer 18 wird, dann "4" zu Integer 4 konvertiert wird und dann der Vergleich stattfindet. Schön. Wieder was gelernt (ich hoffe, dass mir das auch wieder einfällt, wenn der Code etwas umfangreicher ist ;-)). Vielen Dank

mbr