molily: Toter Button

Beitrag lesen

in einer Switch-Anweisung

switch (true) {
        case 1: alert("Eins ist gleich true");
}

jenes nicht zum Erfolg führt. D.h. mein obgies Beispiel würde in JacaScript gar nicht gleicher maßen funktionieren.

Richtig, bei switch wird intern nämlich der <http://de.selfhtml.org/javascript/sprache/operatoren.htm#vergleich@title=Identitätsoperator ===> für den Vergleich verwendet.

switch (foo) {
   case bar : quux(); break;
}

ist identisch mit

if (foo === bar) {
   quux();
}

Hier müssen Typ *und* Wert von foo und bar übereinstimmen - sofern es sich um Primitives handelt -, oder es muss ein und dasselbe Objekt sein.

Bei dem &-Operator kommt immer eine Number heraus, kein Boolean, daher müsste man explizit nach Boolean umwandeln: case Boolean(x & y) oder !!(x & y)

Das ist wirklich ein Grund, der für if/else spricht. Oder für case, je nachdem, was man vergleichen will - case(true) ist jedenfalls tückisch, wenn nicht ein Boolean-Wert bei den case-Ausdrücken herauskommt.

Mathias