Learning Book

if / else if / else

if / else if / else

if — самый базовый условный оператор JavaScript. Выполняет блок кода если условие истинно.

Синтаксис

// Простой if
if (temperature > 30) {
  console.log('Жарко!');
}

// if / else
if (score >= 60) {
  console.log('Сдал');
} else {
  console.log('Не сдал');
}

// if / else if / else
if (score >= 90) {
  console.log('Отлично');
} else if (score >= 70) {
  console.log('Хорошо');
} else if (score >= 60) {
  console.log('Удовлетворительно');
} else {
  console.log('Неудовлетворительно');
}

Всегда используйте фигурные скобки

// Плохо — кажется безобидным, но опасно
if (isLoggedIn)
  showDashboard();
  sendAnalytics(); // Эта строка выполняется ВСЕГДА, хотя выглядит как условная

// Хорошо — явно и надёжно
if (isLoggedIn) {
  showDashboard();
  sendAnalytics();
}
Никогда не опускайте фигурные скобки, даже для однострочных условий. Это предотвращает трудноуловимые баги при добавлении строк.

Условие — любое выражение

Условие в if может быть любым выражением — JavaScript приведёт его к boolean:

const users = [];
if (users.length) {         // 0 — falsy, поэтому else
  renderList(users);
} else {
  renderEmpty();
}

const user = getUser();
if (user) {                 // null/undefined — falsy
  showProfile(user);
}

Вложенные условия и глубина

// Плохо — глубокая вложенность ("pyramid of doom")
if (user) {
  if (user.isActive) {
    if (user.hasPermission('admin')) {
      performAdminAction();
    }
  }
}

// Хорошо — ранний возврат (см. главу о паттернах)
if (!user) return;
if (!user.isActive) return;
if (!user.hasPermission('admin')) return;
performAdminAction();

JavaScript выполняет ToBoolean преобразование для условия if. Следующие записи эквивалентны:

if (value) { ... }
if (Boolean(value)) { ... }
if (!!value) { ... }

Единственный случай, где это может удивить: объекты всегда truthy, включая new Boolean(false) и new Number(0). Но это крайне редкий сценарий.