Добрый день.
Зачем в JS "else if", если его можно заменить следующим образом? :
if (condition1) {
}
if (condition2) {
}
...
...также,
1) такое решение делает код более читабельным.
2) можно использовать switch/case.
Получается, else if бесполезен?
JavaScript
Какой смысл от else if в JS?
Наоборот, именно else if делает код боле читабельным. else if гарантирует, что будет выполнена только одна ветка из цепочки.
Банальный пример обработки значения по диапазонам - всего 3 сравнения:
if (v < 1000) {
...
} else if (v < 10000) {
...
} else if (v < 100000) {
...
} else {
...
}
Тот же самое без else if - 6 сравнений и 2 логических умножения, код понимать существенно сложнее, т. к. каждый if срабатывает независимо и требуются дополнительные усилия на анализ возможных пересечений диапазонов:
if (v < 1000) {
...
}
if (v >= 1000 && v < 10000) {
...
}
if (v >= 10000 && v < 100000) {
...
}
if(v >= 100000) {
...
}
Со switch получается ещё менее читабельно, чем даже с независимыми if. Использовать switch надо только для выборки варианта по индексу, а писать условные выражения в case - это грязный хак.
Банальный пример обработки значения по диапазонам - всего 3 сравнения:
if (v < 1000) {
...
} else if (v < 10000) {
...
} else if (v < 100000) {
...
} else {
...
}
Тот же самое без else if - 6 сравнений и 2 логических умножения, код понимать существенно сложнее, т. к. каждый if срабатывает независимо и требуются дополнительные усилия на анализ возможных пересечений диапазонов:
if (v < 1000) {
...
}
if (v >= 1000 && v < 10000) {
...
}
if (v >= 10000 && v < 100000) {
...
}
if(v >= 100000) {
...
}
Со switch получается ещё менее читабельно, чем даже с независимыми if. Использовать switch надо только для выборки варианта по индексу, а писать условные выражения в case - это грязный хак.
на вкус и цвет все фломастеры - разные
Без else будет говнокод
Сравни
if(a==2) { ...}
else if( b==3 ){ ...}
и
if(a==2) { ...}
if( b==3 ){ ...}
в случае, когда a=2 и b=3
Когда найдешь отличия - возвращайся
if(a==2) { ...}
else if( b==3 ){ ...}
и
if(a==2) { ...}
if( b==3 ){ ...}
в случае, когда a=2 и b=3
Когда найдешь отличия - возвращайся
идиот. condition1 и condition2 могут оба выполняться. а может требоваться, чтобы только первая ветвь выполнялась, если condition1
читабельность наоборот хуже - опять же благодаря таким вот комбинациям
switch-case слишком сложен
читабельность наоборот хуже - опять же благодаря таким вот комбинациям
switch-case слишком сложен
Алексей Толкачёв
непонятно.
не будут ли эти два кода идентичны друг-другу.. ?:
if (condition1) {
}
if (condition2) {
}
if (condition1) {
} else if (condition2) {
}
ведь в 1 случае, пробел между двумя выражениями может означать else, а else можно трактовать как "если не сработало первое выражение, попробовать запустить следующее".
касательно читабельности - вот это условное ветвление является спагетти-кодом, никогда не использую такие варианты.
если нужно проверять на множество условий - switch/case, и в чем его сложность - тоже непонятно.
не будут ли эти два кода идентичны друг-другу.. ?:
if (condition1) {
}
if (condition2) {
}
if (condition1) {
} else if (condition2) {
}
ведь в 1 случае, пробел между двумя выражениями может означать else, а else можно трактовать как "если не сработало первое выражение, попробовать запустить следующее".
касательно читабельности - вот это условное ветвление является спагетти-кодом, никогда не использую такие варианты.
если нужно проверять на множество условий - switch/case, и в чем его сложность - тоже непонятно.
Похожие вопросы
- НЕ пойму синтаксис плиз поясните. Зачем после else в фигурных скобках пишут if (внутри)? Глупый вопрос не смейтесь с меня.
- есть ли JS что-то типо for(i in array, array[i] == 1) сделать то-то else сделать другое
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Js фреймворки, что полезного можно для себя найти?
- В чем цель фреймворков js web?
- Подходит ли Node.js для бэкенда? Или смысл в его изучении? Как много в компаниях используют в бэкенде node.js?
- [HTML/CSS/JS] Как сохранять изменённые в .js данные оффлайн-сервера локально?
- Не могу понять выражение Упростите на JS условие if(i-- && xx + yy <= 4 ), когда все переменные- числа!
- Почему jQuery методы популярнее js методов при общении с ДоМ?
- ПОЧЕМУ JS ТАКОЙ НЕПОНЯТНЫЙ???
если думать логически:
if (cond1) { . .} // код не сработал, переходим к следующей его части.
if (cond2) { . .} // код сработал.