Вебинар: Go-Go-Gadg...Error? Смотрим, как ошибаются Go разработчики! - 26.08
Анализатор обнаружил использование оператора без вычисления по короткой схеме (& или |) в контексте, где, возможно, предполагался оператор с сокращённым вычислением (&& или ||).
Пример:
function process(obj) {
if (obj !== null & isValid(obj)) {
// ....
}
}
function isValid(obj) {
return obj.someProperty !== undefined
}
Если в качестве операндов задействованы ресурсоемкие операции, то использование битовых операций не оптимально. Кроме того, такой код может привести к ошибкам из-за различий в типах операндов и приоритетах операций, а также к неожиданному поведению, если правый операнд имеет побочные эффекты или зависит от условий, задаваемых левым.
Например, если в функцию process первым аргументом передан null, то, несмотря на проверку, произойдёт вычисление правого операнда, что приведёт к исключению:
TypeError: Cannot read properties of null (reading 'someProperty')
Корректный код:
function process(obj) {
if (obj !== null && isValid(obj)) {
// ....
}
}
function isValid(obj) {
return obj.someProperty !== undefined
}
Диагностическое правило классифицируется как:
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: