Это очень похоже на default as first option in switch statement?, но касается JS, а не PHP.Оператор переключения Javascript - по умолчанию сначала ОК?
У меня есть вспомогательная функция, которая обертывает различные стили звонков для другой функции. Обернутая функция требует по крайней мере одного и может принимать до 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', потому что это определенно изменило бы поток управления. – Xufox