Нужно ли мне последнее предложение "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 ответа:
Окончание
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: Нажмите здесь