В случае переключателя значением по умолчанию будет все, кроме ожидаемых случаев. Мне пришлось заменить регистр переключения функцией литерала объекта, чтобы уменьшить сложность цикломати c.
function test(){
const options = getOptions();
switch(options){
case 'a':
return 'foo';
case 'b'
return 'bar';
default:
return 'Nothing';
}
}
Функция замены, которую я написал:
function test(){
const options = getOptions();
return {
'a': 'foo',
'b': 'bar',
'': 'Nothing',
null: 'Nothing',
undefined: 'Nothing'
}[options]
}
test();
Проблема в любом алфавите кроме a, b вернет undefined в отличие от регистра переключателя, который будет обрабатывать все другие параметры по умолчанию.
Я пробовал это:
function test(){
const options = getOptions();
const default = new RegExp([^c-zC-Z], 'g');
return {
'a': 'foo',
'b': 'bar',
'': 'Nothing',
null: 'Nothing',
undefined: 'Nothing',
default: 'Nothing'
}[options]
}
Вышеупомянутое регулярное выражение решает мою проблему покрытия всех других чем «a», «b», но внутри оператора return нет области видимости, значение по умолчанию не распознается. Пожалуйста, предложите на случай по умолчанию.