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

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

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

V7011. Comparison with 'NaN' is incorrect. Use 'isNaN()' or 'Number.isNaN()' method instead.

03 Апр 2026

Анализатор обнаружил, что в программе происходит сравнение значения с NaN через бинарный оператор. Поскольку NaN в JavaScript реализован в соответствии со стандартом IEEE 754, результаты сравнения NaN через оператор == или === будут всегда возвращать false. С высокой вероятностью такое сравнение в коде является ошибочным.

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

let a = NaN;
console.log(a == NaN);  // false
console.log(a === NaN); // false

let b = "10"
console.log(b ==  NaN); // false
console.log(b === NaN); // false

Независимо от того, какое значение сравнивается с NaN, результатом проверки всегда будет false. В случае же, если в качестве оператора сравнения используется != или !==, результатом проверки всегда будет true.

Чтобы корректно проверить, является ли какое-либо значение NaN, следует использовать специальные методы isNaN() и Number.isNaN().

Рассмотрим исправленный пример:

let a = NaN;
console.log(isNaN(a));        // true
console.log(Number.isNaN(a)); // true

let b = "10"
console.log(isNaN(b)); // false
Number.isNaN(b);       // false

Следует отметить разницу между двумя этими методами.

Метод isNaN() возвращает true в том случае, если проверяемое значение равно NaN или после преобразования к числу станет NaN. Метод Number.isNaN(), в свою очередь, не производит преобразования проверяемого значения к числу. Эту разницу отображает следующий пример:

console.log(isNaN("value"));        // true
console.log(Number.isNaN("value")); // false