Нужно ли мне последнее предложение "else" в выражении "if...else if"? [дубликат]


На этот вопрос уже есть ответ здесь:

Каждый if...else if пример, который я видел, включает в себя последнее предложение else:

if (condition1) {
  doA();
} else if (condition2) {
  doB();
} else if (condition3) {
  doC();
} else {
  noConditionsMet();
}
alwaysDoThis();

Я понимаю, что это в основном синтаксический сахар для вложенных if...else утверждений:

if (condition1) {
  doA();
} else {
  if (condition2) {
    doB();
  } else {
    if (condition3) {
      doC();
    } else {
      noConditionsMet();
    }
  }
}
alwaysDoThis();

Я никогда не видел никаких примеров if...else if, который опускает последнее предложение else . Но видя, что простые if утверждения (без else предложений) допустимы, и идя по эквивалентным "вложенным утверждениям" выше, моя интуиция говорит мне, что это нормально:

if (condition1) {
  doA();
} else if (condition2) {
  doB();
} else if (condition3) {
  doC();
}
alwaysDoThis();

Может ли кто-нибудь указать мне на ресурс или пример, который явно говорит, является ли он допустимым?

И на другом уровне, если это является допустимым, будет ли это рекомендовано или это считается "плохой практикой"?

4 8

4 ответа:

Окончание else не является обязательным. Что касается того, нужно ли это, то это зависит от того, чего вы хотите достичь.

Предложение trailing else будет выполняться, если ни одно из указанных условий не является истинным. Если условия гарантированно являются коллективно исчерпывающими, то предложение else совершенно излишне, за исключением, возможно, содержащего утверждение, которое улавливает "невозможное" условие. В вашем случае необходимость предложения else зависит от того, хотите ли вы, чтобы выполнялся определенный код если и только если ни один из них condition1, condition2, и condition3 истинны.

else может быть опущен для любого if утверждение, нет ничего особенного в последнем if из if/else if цепь. Это задокументировано в любой грамматике JavaScript, например вспецификации .

Вы никогда не нуждаетесь в предложении else. (Трудно привести примеры того, что не является необходимым, поэтому я оставлю это на этом.)

edit Как отмечает комментарий, квадратные скобки в нотации синтаксиса языка обычно указывают на то, что что-то является необязательным.

Он действителен на 100%. Нет, это неплохая практика.Если она вам не нужна, не пишите ее.

Возьмем для примера следующее:

function doStuff(data) {
    if (data.something) {
        // go format the data in some way
    }
    else if (data.somethingElse) {
        // go format the data in some other way
    }
    // must be formatted correctly, don't do anything else
    ...
}

Нет необходимости в блоке else, это не оператор if else, а оператор if. Рассмотрим else, elseif как расширение.

Вот ссылка на поток sitepoint: Нажмите на эту . И аналогичная нить на stackoverflow: Нажмите здесь