Andreas: if (bedingung == false)

Beitrag lesen

N'Abend,

zum eigentlichen Thema hab ich nichts zu sagen, mir fällt aber was anderes immer wieder auf.

Oh, ein aufmerksamer Zeitgenosse. :-)

Wo kommen eigentlich Konstrukte wie
if(bedingung==true) (oder false) her?

Diese Abfrage funktioniert, liefert auch das richtige Ergebnis, aber trotzdem ist sie etwas seltsam...

Warum soll sie seltsam sein?

Bedingung ist schliesslich bereits eine boolsche Variable, sie ist bereits wahr oder falsch, das muss nicht nochmals mit == auf Übereinstimmung mit einer der beiden Konstanten "true" oder "false" verglichen werden.

Man fragt schliesslich auch nicht ab in der Art von
"if((a==5)==true)", naürlich benutzt man nur "if(a==5)"

Gegeben sei der folgende Ausdruck:

if(variable==xyz){
  Befehl1;
  Befehl2;
}

Die Befehle in der if-Klammerung werden nur ausgeführt, wenn die zugehörige Bedingung "Der Wert der Variablen ist gleich xyz" wahr ist.

Eine Konstruktion der Art if(a==5) heißt nun: Vergleiche den Wert von a mit der Zahl 5 und wenn er übereinstimmt ist die Bedingung wahr und die if-Befehle können ausgeführt werden.

Eine Konstruktion der Art if( (a==5)==true ) beinhaltet zwei Vergleiche! Vergleiche zuerst a mit der Zahl 5. Vergleiche dann das Ergebnis dieses Vergleiches (entweder true oder false) mit dem Wert true. Wenn die zweite Bedingung erfüllt ist (den Wert true annimmt), dann führe die if-Befehle aus. Der zweite Vergleich kann aber nur den Wert true annehmen, wenn die erste Bedingung erfüllt ist.

Deine beiden obigen Ausdrücke sind also problemlos gegeneinander austauschbar, keiner ist falsch und vor allem: keiner ist besser als der andere. :-)

Wenn die Bedingung aber selbst eine boolsche Variable ist (document.Formular.AGBs.checked) benutzen viele Leute einen erneuten Vergleich, warum?

Da musst Du die anderen Leute fragen. :-)

Die obige Abfrage sollte meiner Meinung eher so lauten:
if(!document.Formular.AGBs.checked)

Sie kann so lauten, muss aber nicht, es kommt darauf an wieviel Schreibarbeit man sich machen möchte und wie übersichtlich die Bedingungen sein sollen.

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.

Mag sein das ich hier Bitspalterei betreibe, aber das begegnet mir immer wieder in irgenwelchen Listings (und lange nicht nur in Javascript-Listings!), und mir ist nicht ganz klar warum.

Irgendwelche Ideen? Ich glaube nicht daß das nur Unwissenheit ist, auch "Cracks" benutzen das...

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.

Es kommt darauf an, ob man nicht der Übersichtlichkeit halber doch einen Vergleich mehr reinschreibt.

Ich hoffe ich konnte Deine Verwirrung etwas entwirren. :-)

Grüße

Andreas