if (a == b || c)
Paul
- javascript
2 MudGuard3 LX0 Paul
0 Gunnar Bittersmann2 JürgenB
Moin,
Konstrukte wie
if (gebaeudetyp == "haus" || "garage") { ... }
sollten doch laufen, oder? Möchte meinen Quelltext etwas verkürzen, bin mir aber nicht ganz sicher ob dies alle Browser mitmachen.
Paul
Hi,
Konstrukte wie
if (gebaeudetyp == "haus" || "garage") { ... }
sollten doch laufen, oder?
Natürlich. Das ist syntaktisch korrekt.
Aber - und darauf willst Du vermutlich hinaus - es ist etwas völlig anderes als
if ((gebaeudetyp == "haus") || (gebaeudetyp == "garage")) { ... }
cu,
Andreas
Hallo, Paul!
Die Abfrage "if (a == b || c)
" wird vom JavaScript wie folgt gelesen: Wenn a gleich b oder wenn c nach einer Typkonvertierung in bool true ergibt - Du möchtest aber "if (a == b || a == c)
", nur in gekürzter Form.
Bei zwei Alternativen würde ich die klassische Schreibweise verwenden, wenn es mehr werden, kannst Du Konstrukte wie "if (({b:1, c:1})[a])
" verwenden (man könnte statt 1 auch true nehmen, aber 1 ist kürzer). Aktuelle Browser unterstützen auch das etwas lesbarere "if (a in {b:1, c:1})
".
Gruß, LX
Vielen Dank!
Paul
@@Paul:
nuqneH
if (gebaeudetyp == "haus" || "garage") { ... }
sollten doch laufen, oder?
Ja. Die Abfrage ist aber sinnlos, da sie immer true
ergibt (sofern gebaeudetyp
definiert ist).
Klar, wenn gebaeudetyp == "haus"
ist. Andernfalls wird die zweite Bedingung ausgewertet: "garage"
in booleschen Wert konvertiert ergibt true
.
Das ist aber sicher nicht das von dir Gewünschte.
Qapla'
Hallo Paul,
Konstrukte wie
if (gebaeudetyp == "haus" || "garage") { ... }
aber nicht so, wie du erwartest. Du prüfst, ob gebaeudetyp gleich "haus" ist oder ob "garage" den Wert true liefert. Was du suchst, ist
if (gebaeudetyp == "haus" || gebaeudetyp == "garage") { ... }
oder evtl. auch switch/case
switch(gebaeudetyp) {
case "haus":
case "garage":
tu_was_mit_den_beiden();
break;
case "scheune":
case "stall":
tu_was_anderes_mit_den_beiden();
break;
}
siehe auch http://de.selfhtml.org/javascript/sprache/bedingt.htm
Gruß, Jürgen