я могу использовать `else if` с троичным оператором?

1

Могу ли я использовать только if и else в инструкции в тройном синтаксисе оператора или я могу каким-то образом включить else if?

пример:

if(a) {
   x
}
else if(y) {
   c
}
else {
   b
}
  • 0
    пожалуйста, добавьте также фрагмент кода.
  • 0
    Пожалуйста, покажите пример того, что вы пытаетесь достичь. Смотрите Как спросить и минимальный воспроизводимый пример
Показать ещё 2 комментария
Теги:
ecmascript-6

2 ответа

5
Лучший ответ

В отличие от if с дополнительным else или необязательным else if ветки, тройной оператор имеет две и только две ветки.

Если вы добавите второе предложение, вы можете иметь else if если хотите,

a ? b : (c ? d : e)

Это, как правило, плохая идея, поскольку тройные операции могут быть беспорядочными для начала, и такое наслаждение обычно представляет собой экспресс-поезд к неподготовленному коду.

Гораздо лучше написать:

if (a) {
  b
}
else if (c) {
{
  d
}
else {
  e
}

Это более многословно, но совершенно ясно.

Если вы используете агрессивно троицы, вы получите код, например:

a()?c?d?e:f:g:h?i(j?k:l?m:n):o

Там, где это все догадывается, что происходит там.

  • 1
    скобки не нужны.
  • 2
    @ NinaScholz Они необходимы, чтобы проиллюстрировать структуру более четко. Без них это превращается в таинственный беспорядок символов.
Показать ещё 2 комментария
1

Вы можете складывать несколько тройников:

var x = (y) ? 1 : ( (z) ? 2 : 0 );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню