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

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

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

```cpp
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](https://en.wikipedia.org/wiki/Dangling_else), и то, к какой инструкции `if` он относится, зависит от конкретного языка программирования\. Здесь форматирование создаёт впечатление, что `else` относится к первому `if`, однако в языке JavaScript он всегда будет относиться к последнему ближайшему `if`\. То есть конструкция выше будет аналогична следующей:

```cpp
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](https://google.github.io/styleguide/jsguide.html#formatting-braces-all), в котором фигурные скобки рекомендуют использовать для всех управляющих конструкций, даже если их тело содержит всего одну операцию\.

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

```cpp
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");
  }
}
```