Синтаксис elseif в JavaScript


Ответы:


507

JavaScript elseif имеет формат «else if», например:

if (condition) {

} else if (other_condition) {

} else {

}

28
Когда люди задают такие вопросы ... Я думаю, это показывает фундаментальное недопонимание. С ifи elseдействительно нет необходимости elseif.
mpen

14
@ Марк, я согласен ... но иногда это портит меня, потому что я привык к языкам, которые имеют другое. Я знаю, что он идентичен, но мне интересно, почему Javascript не использует его. Я рад, однако, что они не использовали elif, потому что это просто неправильно :)
Jay K

16
@JayK: Хаха ... PHP есть elseif, Perl есть elsif(я думаю), а Python elif... сначала пугал меня, но ... я думаю, это довольно мило. Тем не менее, в Python и PHP он служит небольшой цели, потому что иначе не будет работать с синтаксисом двоеточия.
mpen

6
@Mark Это больше показывает недопонимание брекетинга. Скобки не нужны для if/ elseблоков, но людям рекомендуется их использовать, поэтому я могу понять, почему это выглядит неправильно для нового пользователя.

46
@Mark. Чтобы утверждать, что нет причины использовать «else if» неправильно. Иначе, если операторы похожи на использование «switch», это позволит проводить более сложные сравнения. Переключатель, конечно, допускает только очень простые сравнения. Так что да, безусловно, есть веские причины для использования else if.
jolsen


33

Вы можете использовать этот синтаксис, который функционально эквивалентен:

switch (true) {
  case condition1:
     //e.g. if (condition1 === true)
     break;
  case condition2:
     //e.g. elseif (condition2 === true)
     break;
  default:
     //e.g. else
}

Это работает, потому что каждый conditionполностью оценивается перед сравнением со switchзначением, поэтому первый, который оценивает, trueбудет соответствовать, и его ветвь будет выполнена. Последующие ветки не будут выполняться, если вы помните, чтобы использоватьbreak .

Обратите внимание, что используется строгое сравнение, поэтому ветвь, которая conditionявляется просто «правдивой», не будет выполнена. Вы можете привести значение truthy к trueдвойному отрицанию: !!condition.


Это не является функционально эквивалентным AFAIK. То, что вы можете поместить в условия, гораздо более ограничено и switch (true)даже не имеет смысла.
Звол

2
Я признаю, что на первый взгляд это выглядит странно, но это эквивалентно. Условием может быть все что угодно (включая вызовы функций или что-то еще), и если оно выполнится, trueтогда этот случай будет выполнен - ​​точно так же else if.
Тамлин

5
О, я вижу, что ты сейчас делаешь. Это чертовски умно. (Я добавил параграф, объясняющий, как это работает, чтобы я мог убрать свое понижение.)
zwol

1
Это очень простое, чистое и элегантное решение для списков условий с более чем одним условием «если-либо»
Стив Гооссенс

4
Не полностью эквивалентен, если условия не возвращают логические значения, например, if([]) alert('a')выдает предупреждение, но не возвращает switch(true){case []:alert('a')}. Это потому, что []это истинное значение, но не равно true, как @zwol объяснил в этом редактировании .
Oriol

13

На самом деле, технически при правильном отступе это будет:

if (condition) {
    ...
} else {
    if (condition) {
        ...
    } else {
        ...
    }
}

Нет else if, строго говоря.

(Обновление: конечно, как уже отмечалось, вышеупомянутое не считается хорошим стилем.)


1
Вы можете и должны написать это if (condition1) { ... } else if (condition2) { ... } else { ... }.
Звол

4
По сути, при использовании else ifвы фактически опускаете необязательный блок {...}. Я делал ссылки на основе EMCAScript и MDN ..
skube

13
С точки зрения формальной грамматики языка вы правы, но ваш ответ может создать у людей неправильное впечатление о else { if ... }хорошем стиле.
Звол

1
Что сказал Звол. Есть то, что вы (skube) имели в виду .. А потом есть то, что вы сказали.
Джерард ONeill

6
if ( 100 < 500 ) {
   //any action
}
else if ( 100 > 500 ){
   //any another action
}

Легко, использовать пространство


2

Условные операторы используются для выполнения различных действий в зависимости от условий.

Используется ifдля указания блока кода, который должен быть выполнен, если указанное условие истинно

Используйте elseдля указания блока кода, который будет выполнен, если то же условие ложно

Используйте, else ifчтобы указать новое условие для проверки, если первое условие ложно


1
x = 10;
if(x > 100 ) console.log('over 100')
else if (x > 90 ) console.log('over 90')
else if (x > 50 ) console.log('over 50')
else if (x > 9 ) console.log('over 9')
else console.log('lower 9') 

0

Вам не хватает пробела между elseиif

Должно быть else ifвместоelseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.