Подтвердить что ты не робот

Ошибка создания дубликата константы в заявлении на коммутатор

У меня есть следующий код, и я получаю сообщение об ошибке "Дублировать декларацию query_url".

  switch(condition) {
    case 'complex':
      const query_url = `something`;
      break;
    default:
      const query_url = `something`;
      break;
  }

Я понимаю, что query_url объявляется дважды, что неверно. Но я не знаю, как это решить. Может ли кто-нибудь помочь в том, что должно быть правильным способом сделать эту работу?

4b9b3361

Ответ 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]

Недостаток в том, что вы не можете иметь значение по умолчанию для объекта, вам нужна дополнительная проверка условий.