switch ... case Fall auch durch Variable angebbar
mathefritz
- javascript
<script>
v1 = 1; v2 = 2; sw = 1;
switch (sw){
case v1: alert(1);break;
case v2: alert(2);break;
}
</script>
erstaunt stelle ich fest das obiges funktioniert. Würmer?
Stell dir vor:
<script>
switch ( true ) {
case ( 'bar' == foo ):
alert ("Ha!");
break;
geht auch ...
Danke;
ja. das hab ich im wiki schon gesehen;
meine Version kann ich nun zusammen mit folgendem verwenden, wobei aber wünschenswert wäre
daß es auch mit const funktioniert.
<script>
function f(v,i){ eval(/* 'const ' + */ v +' = '+'i' + ';');}
['nll','eins','zwei'].forEach( f );
</script>
In der gedachten Anwendung enthält der Array natürlich sinnvolle Symbole die je nach Situation der Switch-Variablen zugewiesen werden; und das ganze soll etwas Tipparbeit ersparen und versehentliche Vergabe derselben Nummer an verschiedene Symbole ausschließen.
Welcher Wert einem bestimmten Symbol zugewiesen wird ist gleichgültig.
Tach!
In der gedachten Anwendung enthält der Array natürlich sinnvolle Symbole die je nach Situation der Switch-Variablen zugewiesen werden; und das ganze soll etwas Tipparbeit ersparen und versehentliche Vergabe derselben Nummer an verschiedene Symbole ausschließen.
Was auch immer du konkret für einen Anwendungsfall hast, ich würde mir dreimal überlegen, ob das unbedingt mit eval() gelöst sein muss. Da gibt es sicherlich eine elegantere Lösung als wegen Tipparbeitersparnis sich solchen undurchsichtigen Code ans Bein zu binden.
dedlfix.
nun ja, sobald es den Datentyp enum gibt wird dieser natürlich des bevorzugte Mittel sein .
Hallo,
Case (Käs?) erstaunt
Es wird auf Gleichheit getestet, man kann zwei Variablen daraufhin prüfen, so what?
Würmer?
Watt?
Gruß
Kalk
nun, in anderen Sprachen soweit mir bekannt, müssen es Konstanten sein .
"Würmer" = Fallstricke, Probleme die dabei entstehen könnten.
Gruß m.f.
Tach!
nun, in anderen Sprachen soweit mir bekannt, müssen es Konstanten sein .
In manchen anderen Sprachen. Aber andere Sprachen sind eben andere Sprachen. Unterschiede inklusive - nicht nur beim switch.
dedlfix.