Grüssi!
Warum soll sie seltsam sein?
Dazu müsste man etwas weiter ausholen! Was sind Ausdrücke? Man könnte sogar bis zur Aussagen/Prädikatenlogik ausholen! Eine Aussage ist immer entweder Wahr oder Falsch!
- a==5; ist eine wahre Aussage wenn a gleich 5 ist.
- a=5; ist eine (wahre) Aussage (vorausgesetzt es wird 5 fehlerfrei auf a zugewiesen)
- sogar 5; selber ist eine (wahre) Aussage! -- komisch wirds bei 0; .-)
- document.formular.auswahl.checked ist eine Aussage
Alle obigen "Aussagen" sind gültige Ausdrücke! Sie werden bereits evaluiert zu true/false, wieso also nochmal abfragen ob true == true?
Wenn Du ein Skript programmierst und jemand anderes soll es vielleicht mal verändern oder weiter anpassen, dann sind klare Ausdrücke der Form if(boolscheVariable == true) leichter verständlich.
ich finde genau das Gegenteil! if(checked) ist für mich leichter zu lesen als if(checked==true)
Und den Verneinungsoperator sollte man ohnehin kennen, wenn man sich mit Programmiersprachen beschäftigt!
Das Problem liegt einfach darin, dass Du Dir klar machen musst, dass alles, was in der Bedinung zu Deinem if steht, wahr sein muss, damit die entsprechenden Befehle ausgeführt werden. Wenn Du keine boolesche Variable hast, musst Du vergleichen, wenn Du eine boolsche Variable hast, kannst Du vergleichen, zwingend notwendig ist es aber nicht.
Auch eine nicht-boolsche Variable wird evaluiert zu einem Boolschen Ausdruck!
Es kommt darauf an, ob man nicht der Übersichtlichkeit halber doch einen Vergleich mehr reinschreibt.
Ich hoffe ich konnte Deine Verwirrung etwas entwirren. :-)
Genau das (Verwirrung) passiert jedoch wenn man unnötige Abfragen einbaut! Auf der Uni lernten wir in der ersten Stunde von Programmiertechnik diese x==true Abfragen nur dort einzusetzen wo sie wirklich nötig sind (also fast nie *fg*), man sagte uns es sei einfach ein schlechter Stil und zeuge nicht gerade von der Fähigkeit/Wissen eines Programmierers!
Ist also auch ein bissl Geschmackssache ;-)
lg bernhard