Oder-abfrage
jake
- javascript
Ich habe probleme bei der oder-abfrage weiß nämlich nich genau wie sie geht: Hier mein Quelltext der nicht klapt:
if (i = 2) or (p =3) {alert();
Danke im voraus.
guten Abend,
Hier mein Quelltext der nicht klapt:
if (i = 2) or (p =3) {alert();
so könnte es klappen:
if (i=2 || p=3) alert("hallo, was machst'n du hier?")
siehe auch: http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#logisch
Christoph S.
hallo SELFerinnen und SELFer,
Hier mein Quelltext der nicht klapt:
if (i = 2) or (p =3) {alert();
der klappt mit Sicherheit nicht.
so könnte es klappen:
if (i=2 || p=3) alert("hallo, was machst'n du hier?")
ich fürchte auch der klappert nicht,
aber so muß es gehen:
if (i==2 || p==3) alert("hallo, was machst'n du hier?")
ein einfaches = ist der Zuweisungsoperator (z.B. var xxy = "text")
das doppelte == ist der Vergleichsoperator auf Gleichheit
das hier ist natürlich immer gut:
http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#logisch]
Grüsse aus Nürnberg
HarryS
oh Mist, zu früh abgeschickt :-(
aber so muß es gehen:
if (i==2 || p==3) alert("hallo, was machst'n du hier?")
auch falsch weil die {} Klammer fehlt, und das ; sollte man auch setzen
aber jetzt:
if (i==2 || p==3) {alert("hallo, was machst'n du hier?")};
Grüsse aus Nürnberg
HarryS
hrrrrmmmm .....
aber so muß es gehen: if (i==2 || p==3) alert("hallo, was machst'n du hier?")
auch falsch weil die {} Klammer fehlt, und das ; sollte man auch setzen
du hast zwar meinen link zu SELFHTML nochmals bekräftigt, aber nicht selbst nachgelesen *g*. "es" geht nämlich - abhängig vom restlichen Script-Kontext - durchaus ohne Klammer und ohne Semikolon. Selbst die doppelten Gleichheitszeichen sind zwar nicht verkehrt, aber auch nicht zwingend erforderlich
Grüße nach Nürnberg
Christoph S.
Hallo Christoph,
"es" geht nämlich - abhängig vom restlichen Script-Kontext - durchaus ohne Klammer und ohne Semikolon.
Stimmt, ist aber schlechter Stil.
Selbst die doppelten Gleichheitszeichen sind zwar nicht verkehrt, aber auch nicht zwingend erforderlich
Falsch! if (p=3) liefert als Ergebnis 3, was, weil es <> 0 ist als true interpretiert wird. In einer Abfrage sind also die doppelten Gleichheitszeichen zwingend erforderlich.
Grüße
Andreas
Hallo Christoph, hallo Andreas
"es" geht nämlich - abhängig vom restlichen Script-Kontext - durchaus ohne Klammer und ohne Semikolon.
Stimmt, ist aber schlechter Stil.
Und den wollen wir uns ja nun gerade NICHT angewöhnen oder? ;-)
Selbst die doppelten Gleichheitszeichen sind zwar nicht verkehrt, aber auch nicht zwingend erforderlich
Falsch! if (p=3) liefert als Ergebnis 3, was, weil es <> 0 ist als true interpretiert wird. In einer Abfrage sind also die doppelten Gleichheitszeichen zwingend erforderlich.
Nun, dazu gibts nichts weiter zu sagen.
Grüsse aus Nürnberg
HarryS
hi,
"es" geht nämlich - abhängig vom restlichen Script-Kontext - durchaus ohne Klammer und ohne Semikolon.
Stimmt, ist aber schlechter Stil.
nicht unbedingt. Wenn es in der entsprechenden aufrufenden Funktion nichts anderes gibt, können Klammern und Semikolon problemlos fortgelassen werden. Gibt es in der Funktion noch andere Anweisungen, ist es nicht bloß "schlechter Stil", sondern in der Regel sogar ein echter Fehler. Es kommt ganz drauf an, was die _gesamte_ Funktion tun soll.
Selbst die doppelten Gleichheitszeichen sind zwar nicht verkehrt, aber auch nicht zwingend erforderlich
Falsch! if (p=3) liefert als Ergebnis 3, was, weil es <> 0 ist als true interpretiert wird.
Das soll es ja in diesem Fall auch. _Hier_ wäre deine Anmerkung zum "schlechten Stil" angebracht gewesen.
In einer Abfrage sind also die doppelten Gleichheitszeichen zwingend erforderlich.
nein, sind sie nicht. Ich bleibe dabei: je nachdem, was man nun wirklich machen möchte, sind die "Doppelten" durchaus zu empfehlen und nahezu auch immer "guter Stil" - aber _zwingend erforderlich_ sind sie nicht. Die Differenzierung zwischen "ist identisch mit" und "ist gleich" mag als Haarspalterei erscheinen, ist es jedoch nicht ;-) Es kommt einfach darauf an, ob man die Bedingung "ist identisch mit" meint oder nicht.
Grüße aus Berlin
Christoph S.
Hallo Christoph,
In einer Abfrage sind also die doppelten Gleichheitszeichen zwingend erforderlich.
nein, sind sie nicht. Ich bleibe dabei: je nachdem, was man nun wirklich machen möchte, sind die "Doppelten" durchaus zu empfehlen und nahezu auch immer "guter Stil" - aber _zwingend erforderlich_ sind sie nicht. Die Differenzierung zwischen "ist identisch mit" und "ist gleich" mag als Haarspalterei erscheinen, ist es jedoch nicht ;-) Es kommt einfach darauf an, ob man die Bedingung "ist identisch mit" meint oder nicht.
if (i==2) alert("");
alert wird ausgeführt, wenn Variable i den Wert 2 hat.
if (i=2) alert("");
der Variablen i wird der Wert 2 zugewiesen, und das alert wird ausgeführt, wenn diese Aktion erfolgreich war. Es ist allerdings immer erfolgreich, einer Variablen den Wert 2 zuzuweisen, so dass es nicht den geringsten Sinn macht, dies abzufragen. Deshalb ist sowas immer eine versehentliche Schreibweise für den ersten Fall, und hat nichts mit Stil zu tun.
Grüße, Stefan
hi Stefan,
if (i=2) alert("");
der Variablen i wird der Wert 2 zugewiesen, und das alert wird ausgeführt, wenn diese Aktion erfolgreich war. Es ist allerdings immer erfolgreich, einer Variablen den Wert 2 zuzuweisen
sehr richtig ;-) Und das ist genau das, was ich mit meinem Hinweis angesprochen habe, daß man sehr genau überlegen sollte, _was_ in der if-Abfrage eigntlich für eine Bedingung wofür gesetzt werden soll. Wenn du
if (i=2) alert("");
schreibst, ist die alert-Anzeige nicht mehr von der Bedingung, daß i den Wert 2 haben soll, abhängig - es wird einfach ausgeführt. Im Hintergrund hat aber i jetzt den Wert 2, und damit könnte man weiterarbeiten.
so dass es nicht den geringsten Sinn macht, dies abzufragen.
Oh doch. Wenn innerhalb der Funktion noch mit der Variablen i weitergearbeitet werden soll, _kann_ das Sinn machen. Das wird sicherlich selten vorkommen bzw. erforderlich sein. Aber _möglich_ und als logisches Konstrukt durchaus überlegenswert isrt es
Deshalb ist sowas immer eine versehentliche Schreibweise
nein, nicht "immer". Es verschiebt sich lediglich der "Akzent" der if-Bedingung.
Christoph S.
Hi Christoph,
so dass es nicht den geringsten Sinn macht, dies abzufragen.
Oh doch. Wenn innerhalb der Funktion noch mit der Variablen i weitergearbeitet werden soll, _kann_ das Sinn machen. Das wird sicherlich selten vorkommen bzw. erforderlich sein. Aber _möglich_ und als logisches Konstrukt durchaus überlegenswert isrt es
Deshalb ist sowas immer eine versehentliche Schreibweise
nein, nicht "immer". Es verschiebt sich lediglich der "Akzent" der if-Bedingung.
He, nun gib es endlich zu! *g*
Ausgangspunkt war der:
if (i = 2) or (p =3) {alert();
Deine Korrektur sah so aus:
if (i=2 || p=3) alert("hallo, was machst'n du hier?")
und diese Korrektur schrie ihrerseits nach einer solchen. Gerade mit dem "oder" dazwischen wird es doch nun völliger Humbug. Das hast du nicht gesehen, fertig. Sowas kommt vor, nicht nur bei dir. Man muss sich doch auch mal verbessern lassen können, ohne ewig herumzureden, wenn doch eh nichts mehr zu retten ist. *g*
nichts für ungut, Stefan .-)
Hallo,
Ausgangspunkt war der:
if (i = 2) or (p =3) {alert();
Deine Korrektur sah so aus:
if (i=2 || p=3) alert("hallo, was machst'n du hier?")
und diese Korrektur schrie ihrerseits nach einer solchen. Gerade mit dem "oder" dazwischen wird es doch nun völliger Humbug.
...und gibt einen Javascript-Fehler.
Grüße
Andreas
Hallp Christoph,
Falsch! if (p=3) liefert als Ergebnis 3, was, weil es <> 0 ist als true interpretiert wird.
Das soll es ja in diesem Fall auch. _Hier_ wäre deine Anmerkung zum "schlechten Stil" angebracht gewesen.
Nein, soll es nicht. Es soll getestet werden, ob p den Wert 3 hat. Auch die Abfrage if (p=0) liefert den zugewiesenen Wert zurück, also in dem Fall 0 (false), was ja nun wirklich nicht Sinn der Abfrage sein kann.
Grüße
Andreas