Le problème avec votre exemple est que l'expression ('foo' || 'bar')
évalue à 'foo'
, et donc il ne correspond quand i
est 'foo'
, et jamais quand i
est 'bar'
.
L'opérateur ||
produit la valeur de son premier opérande si le premier opérande est véridique. Sinon, il produit la valeur du second opérande. Une chaîne non vide est toujours vraie, et c'est pourquoi votre expression renvoie 'foo'
.
Cependant, en JavaScript, chaque case
passe dans le cas suivant à moins que vous n'interrompiez explicitement le flux avec break
ou return
. Par conséquent, vous pouvez facilement le faire fonctionner comme suit:
switch(i) {
case 'foo':
case 'bar':
alert('foo or bar');
break;
default:
alert('not foo or bar');
}
Duh! Merci. Je ne sais pas comment je n'ai pas pensé à ça. éditer - merci à tous! Désolé que je suis un idiot. – Greg