Всегда ли должен завершить IF ELSEом?

Всегда ли должен завершить IF ELSEом ?


Ответы (2 шт):

Автор решения: Сергей Мишин

Всегда ли должен завершить IF ELSEом ?

Нет, не всегда.

Например есть функция, где нужно вывести число на экран только тогда, когда оно больше 10. Можно написать так:

function showNumber(number) {
    if (number > 10)
        alert(number);
    else
        return;
}

Однако это бессмысленно. Достаточно написать так:

function showNumber(number) {
    if (number > 10)
        alert(number);        
}

Другой случай:

if (count(params) > 0) {
    someVar = filterData(myData);
    filterMap = params;
} else {
    filterMap  ['name' => null];
}

Мы видим, что в любом случае мы задаем значение для переменной filterMap. То есть какое-то изначальное значение будет. Проще этот код написать так:

filterMap  ['name' => null];

if (count(params) > 0) {
    someVar = filterData(myData);
    filterMap = params;
}

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

→ Ссылка
Автор решения: Grundy

Если обратиться к спецификации конструкция if имеет две формы

IfStatement[Yield, Await, Return]:
    if ( Expression[+In, ?Yield, ?Await] ) Statement[?Yield, ?Await, ?Return] else Statement[?Yield, ?Await, ?Return]
    if ( Expression[+In, ?Yield, ?Await] ) Statement[?Yield, ?Await, ?Return]

Следовательно else может как присутствовать, так и отсутствовать.

При этом, в случае присутствия else будет связан с ближайшим к нему if без else.

→ Ссылка