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

Вебинар: Зачем тестировщику нужна безопасность? - 16.04

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

V7007. The '|' and '&' operators bypass short-circuit evaluation. The right-hand operand will be evaluated even when the left operand is false.

03 Апр 2026

Анализатор обнаружил использование оператора без вычисления по короткой схеме (& или |) в контексте, где, возможно, предполагался оператор с сокращённым вычислением (&& или ||).

Пример:

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
}