這與default as first option in switch statement?非常相似,但是關於JS而不是PHP。Javascript switch語句 - 默認第一次OK?
我有不同的包裝風格調用其他功能的輔助功能。包裝的功能至少需要一個,最多可以接受4個參數。我正在做的是通過這個最小代碼示例很好地描述,這在我的Chrome和FF版本中運行良好。
function testSwitch(definition) {
var term, minLength, boundaryStart, boundaryEnd;
switch (definition.length) {
default:
case 4:
boundaryEnd = definition[3];
case 3:
boundaryStart = definition[2];
case 2:
minLength = definition[1];
case 1:
term = definition[0];
break;
case 0:
console.log('fail')
return;
}
console.log(term, minLength, boundaryStart, boundaryEnd);
}
(在實際使用情況下,它們被傳遞給實際的函數而不是console.log)。因此,這個想法是通過案例,允許提供太多的參數(但忽略多餘的參數),但如果提供的定義爲空則失敗。
所以我從我的測試知道,這似乎在某些瀏覽器至少,我可以依靠跨比較新的瀏覽器(如iOS版/ Android設備,IE8 +,封邊等),該工作工作?我知道排除break語句是明確定義的行爲,並且使用的範圍相當廣泛,但我們並不確定首先使用默認情況並且是空的(例如,如果某些瀏覽器JS引擎會優化空默認情況,那麼這不會爲我工作,因爲例如,當調用大小爲5的數組時,它不起作用)。
您的方案對我的作品在Firefox 48。我想,這應該對所有JS工作引擎,因爲我認爲任何JS引擎都不會優化掉默認情況,因爲這肯定會改變控制流。 – Xufox