Вебинар: Go-Go-Gadg...Error? Смотрим, как ошибаются Go разработчики! - 26.08
Анализатор обнаружил потенциальную ошибку: форматирование конструкции 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");
}
}
Диагностическое правило классифицируется как:
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: