Ошибка создания дубликата константы в заявлении на коммутатор
У меня есть следующий код, и я получаю сообщение об ошибке "Дублировать декларацию query_url".
switch(condition) {
case 'complex':
const query_url = `something`;
break;
default:
const query_url = `something`;
break;
}
Я понимаю, что query_url объявляется дважды, что неверно. Но я не знаю, как это решить. Может ли кто-нибудь помочь в том, что должно быть правильным способом сделать эту работу?
Ответы
Ответ 1
если query_url
может иметь несколько значений в зависимости от ветки коммутатора, очевидно, вам нужна переменная (объявить либо с помощью var
, либо let
).
const устанавливается один раз и остается таким образом.
пример использования с let
let query_url = '';
switch(condition) {
case 'complex':
query_url = `something`;
break;
default:
query_url = `something`;
break;
}
Ответ 2
Попробуйте обернуть случаи в блоках:
switch(condition) {
case 'complex': {
const query_url = `something`;
… // do something
break;
}
default: {
const query_url = `something`;
… // do something else
break;
}
}
Ответ 3
Я лично предпочитаю (и, как правило, злоупотреблять) в следующих случаях:
const query_url = (()=>
{
switch(condition)
case 'complex': return 'something';
default : return 'something-else';
})();
(для этого требуется ES6 или объявление "use-strict" в Node 4.x, хотя)
Обновление: альтернативно, гораздо более компактный, в зависимости от наличия там какой-либо логики или простого назначения:
const query_url = {complex : 'something'}[condition] || 'something-else';
Кроме того, конечно, зависит от объема внешней логики, встроенной в эти операторы switch!
Ответ 4
Просто поставьте switch
в функцию с некоторыми операторами возврата:
var condition;
function aSwitch(condition){
switch(condition) {
case 'complex':
return 'something';
default:
return 'something';
}
}
const query_url = aSwitch(condition);
Ответ 5
const query_url={
complex:'something complex',
other:'other thing'
}[condition]
Недостаток в том, что вы не можете иметь значение по умолчанию для объекта, вам нужна дополнительная проверка условий.