这与在switch语句中将default作为第一个选项的方法很相似,但是与PHP无关,而是涉及JS。
我有一个帮助函数,用于包装另一个函数的各种调用样式。被包装的函数至少需要一个参数,最多可以接受4个参数。我所做的事情可以通过这个最小代码示例进行很好地描述,在我的Chrome和FF版本中运行良好。
(在实际使用中,它们会传递给实际函数而不是console.log)。因此,想法是落入情况,允许提供太多参数(但忽略额外的参数),但如果提供的定义为空,则失败。
我有一个帮助函数,用于包装另一个函数的各种调用样式。被包装的函数至少需要一个参数,最多可以接受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的数组调用时,它就无法正常工作)。
default
条件,因为我的感觉是,当其它情况都不符合时,它应该作为后备条件。这是其使用的传统理解,这样使用显然可以创造一致性和更容易理解。我建议,如果你发现自己首先使用default
,那么可能有一个更清晰的方法来构建你的解决方案。 - Chris Halcrow