Что такое NaN и как его можно получить?
Основы языка
`NaN` (Not a Number) — специальное значение типа number, которое означает результат невалидной числовой операции.
Как получить
Number('abc'); // NaN
parseInt('x'); // NaN
0 / 0; // NaN
Math.sqrt(-1); // NaN
undefined + 1; // NaN
Infinity - Infinity; // NaNОсобенности
NaNне равен самому себе:NaN === NaN—false.typeof NaN—'number'.- Любая арифметика с
NaNснова даётNaN.
Как проверять
Number.isNaN(NaN); // true — только для настоящего NaN
Number.isNaN('abc'); // false
isNaN('abc'); // true — приводит к числу, поэтому ненадёжен
Object.is(NaN, NaN); // trueИспользуйте Number.isNaN: он не приводит тип. Array.prototype.includes находит NaN, а indexOf — нет.
Коротко для собеседования
NaN — число, обозначающее ошибку вычисления (Number('abc'), 0 / 0). Он не равен самому себе, поэтому проверяют через Number.isNaN или Object.is.