Загрузка…
Загрузка…
Глобальная isNaN(value) отвечает: «станет ли значение NaN после приведения к числу?» — и в этом её главная ловушка.
isNaN(NaN); // true
isNaN("hello"); // true — "hello" → NaN
isNaN(undefined);// true
isNaN("123"); // false — приводится к 123
isNaN(true); // false — true → 1Number.isNaNNumber.isNaN не делает coercion: true только если аргумент уже число и это NaN.
Number.isNaN(NaN); // true
Number.isNaN("hello"); // false
Number.isNaN(undefined);// falseПроверка «не число после парсинга»:
Number.isNaN(Number(str));
// или
Number.isFinite(Number(str));NaN === NaN; // false
Object.is(NaN, NaN); // trueПоэтому и нужны Number.isNaN / Object.is.
Итог: глобальный isNaN путает из‑за приведения типов; в современном коде — Number.isNaN.
