Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Использование PVS-Studio при разработке встраиваемых систем - 14.05

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V7022. It is possible that this 'else' branch should belong to the previous 'if' statement.

12 Май 2026

Анализатор обнаружил потенциальную ошибку: форматирование конструкции else не соответствует логике выполнения программы.

Рассмотрим пример:

function checkValue(x, y) {
  if (x === 10)
    if (y === 20)
      console.log("x is 10 and y is 20");
  else  // <=
    console.log("x is not 10");
}

Такой else именуется как dangling else, и то, к какой инструкции if он относится, зависит от конкретного языка программирования. Здесь форматирование создаёт впечатление, что else относится к первому if, однако в языке JavaScript он всегда будет относиться к последнему ближайшему if. То есть конструкция выше будет аналогична следующей:

function checkValue(x, y) {
  if (x === 10) {
    if (y === 20) {
      console.log("x is 10 and y is 20");
    } else {
      console.log("x is not 10");
    }
  }
}

Чтобы избежать подобной путаницы, рекомендуем следовать совету из Google JavaScript Style Guide, в котором фигурные скобки рекомендуют использовать для всех управляющих конструкций, даже если их тело содержит всего одну операцию.

Исправленный вариант:

function checkValue(x, y) {
  if (x === 10) {
    if (y === 20) {
      console.log("x is 10 and y is 20");
    }
  } else {
    console.log("x is not 10");
  }
}