有沒有什麼方法可以在語法上使用開關進行工作?布爾運算符在switch語句中?
switch(i){
case ('foo' || 'bar'):
alert('foo or bar');
break;
default:
alert('not foo or bar');
}
有沒有什麼方法可以在語法上使用開關進行工作?布爾運算符在switch語句中?
switch(i){
case ('foo' || 'bar'):
alert('foo or bar');
break;
default:
alert('not foo or bar');
}
switch(i){
case 'foo':
case 'bar':
alert('foo or bar');
break;
case 'other':
default:
alert('other');
}
注:「其他」不需要,我只是表明你可以疊加使用默認情況下也是如此。
JavaScript不起作用。像這樣做:
switch(i){
case 'foo':
case 'bar':
alert('foo or bar');
break;
default:
alert('not foo or bar');
}
像C,JavaScript的case
子句將級聯。
你的榜樣的問題是表達('foo' || 'bar')
計算結果爲'foo'
,因此,當i
是'foo'
它只會匹配,決不當i
是'bar'
。
如果第一個操作數是truthy,則||
運算符會生成其第一個操作數的值。否則它會生成第二個操作數的值。一個非空字符串總是真的,這就是爲什麼你的表達式返回'foo'
。
但是,在JavaScript中,每個case
都會進入下一個案例,除非您明確中斷break
或return
的流程。因此,你可以很容易使其工作如下:
switch(i) {
case 'foo':
case 'bar':
alert('foo or bar');
break;
default:
alert('not foo or bar');
}
switch(i){
case 'foo':
case 'bar':
alert('foo or bar');
break;
default:
alert('not foo or bar');
}
從official Mozilla Developer Center docs,使用多個的情況下,像這樣:
// multiple cases:
case "Mangoes":
case "Papayas":
document.write("Mangoes and papayas are $2.79 a pound.<br>");
break;
default:
document.write("Sorry, we are out of " + expr + ".<br>");
}
或者,如果尋找一個IE的解決方案,你會使用JScript docs for switch這是指區分條件「標籤」,並指出:
如果沒有使用 break語句,則會執行多個標籤塊。
有效地說,兩套文檔都說將多個案例放在一起是一回事。
會沿着這條線工作?
switch(i){
case ('foo'):
case ('bar'):
alert('foo or bar');
break;
default:
alert('not foo or bar');
}
switch(i) { case 'foo': case 'bar': alert('foo or bar'); break; default: alert('not foo or bar'); break; }
您必須設置獨立的情況下,每個值。
switch(i)
{
case 'foo':
case 'bar':
alert('foo or bar');
break;
default:
alert('not foo or bar');
}
使用你的代碼,你將只能得到警告,如果i
計算結果爲真,因爲字符串不爲空也計算爲真。
杜!謝謝。我不知道我怎麼沒有想到這一點。 編輯 - 謝謝大家!對不起,我是個白癡。 – Greg 2010-07-12 04:10:32