【发布时间】:2016-12-08 12:14:56
【问题描述】:
这与 default as first option in switch statement? 非常相似,但涉及的是 JS 而不是 PHP。
我有一个辅助函数,它为另一个函数包装了各种调用样式。包装后的函数至少需要一个,最多可以接受 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+、Edge 等)上工作吗?我知道排除 break 语句是定义明确的行为并且使用相当广泛,但我不太确定首先使用默认情况并为空(例如,如果某些浏览器 JS 引擎会优化空默认情况,那么这不会为我工作,因为它在使用大小为 5 的数组时不起作用,例如)。
【问题讨论】:
-
您的方案适用于 Firefox 48。我想,它应该适用于所有 JS 引擎,因为我认为任何 JS 引擎都不会优化
default案例,因为那肯定会改变控制流。
标签: javascript cross-browser switch-statement