Синтаксис "elseif" у JavaScript


Відповіді:


507

JavaScript's elseif у форматі "else if", наприклад:

if (condition) {

} else if (other_condition) {

} else {

}

28
Коли люди задають подібні запитання .. Я думаю, що це свідчить про принципове непорозуміння. З ifі elseнасправді в цьому немає потреби elseif.
понеділок

14
@ Марк, я погоджуюся ... але це іноді мене псує, тому що я звик до мов, які мають інший текст. Я знаю, що це ідентично, але мені цікаво, що причина JavaScript у тому, щоб його залишити. Радий, однак, що вони не використовували elif, тому що це просто неправильно :)
Jay K

16
@JayK: Ха-ха .. PHP має elseif, perl має elsif(я думаю), а Python має elif.. таке спочатку мене дратувало, але ... я думаю, це мило. Це дійсно служить незначній меті в Python та PHP, оскільки в іншому випадку він не буде працювати з їх синтаксисом двокрапки.
mpen

6
@Mark Це більше показує непорозуміння брекетінгу. Дужки не потрібні для if/ elseблоків, але людям рекомендується їх використовувати, тому я можу зрозуміти, чому це виглядає неправильно для нового користувача.

46
@Mark Стверджувати, що ніколи не існує причини використовувати "else if" неправильно. Ще якщо висловлювання схожі на використання "перемикача", однак це дозволить зробити більш детальні порівняння. Перемикач, звичайно, дозволяє проводити лише дуже прості порівняння. Так, так, напевно є вагомі причини для використання іншого, якщо.
jolsen

49

Просто додайте пробіл:

if (...) {

} else if (...) {

} else {

}

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)навіть не має сенсу.
zwol

2
Зізнаюся, спочатку це виглядає дивно, але це рівнозначно. Ця умова може бути будь-якою, що вам подобається (включаючи виклики функцій або будь-яку іншу), і якщо вона оцінить, trueто цей випадок буде дотриманий - точно так само else if.
Тамлін

5
О, я бачу, що ти зараз робиш. Це досить проклято розумно. (Я додав абзац, в якому пояснюється, як це працює, щоб я міг відкликати свій голос.)
zwol

1
Це дуже просте, чітке та елегантне рішення для списків умов, що мають більше 1 умови "інше, якщо"
Стів Гуссенс

4
Не зовсім еквівалентно, якщо умови не повертають булевих даних, наприклад, if([]) alert('a')створює попередження, але switch(true){case []:alert('a')}не робить. Це тому, що []є правдоподібним значенням, але не рівним true, як @zwol пояснив у цій редакції .
Оріол

13

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

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

Немає else if, строго кажучи.

(Оновлення: Звичайно, як зазначалося, вищезгадане не вважається хорошим стилем.)


1
Ви можете, і вам слід, написати це if (condition1) { ... } else if (condition2) { ... } else { ... }.
zwol

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

13
Що стосується формальної граматики мови, ви правильні, але ваша відповідь може створити на людей неправильне враження, що else { if ... }це гарний стиль.
zwol

1
Що сказав zwol. Є те, що ви (скубе) мали на увазі .. І тут є те, що ви сказали.
Джерард 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.