V7022. It is possible that this 'else' branch should belong to the previous 'if' statement.
Анализатор обнаружил потенциальную ошибку: форматирование конструкции 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");
}
}