Кстати можно ещё написать свою функцию проверки NaN. Что типо такого: const isReallyNaN = (number) => Number(number) !== Number(number); console.log(isReallyNaN('5')) //false console.log(isReallyNaN(5 + '5')) // false console.log(isReallyNaN(5 + 'abc')) // true Если удаётся конвертировать значение параметра то он равняется самому себе и возвращает false. А если допустим это строка и значение не конвертирется в число, то мы получаем NaN !== NaN //true. Поскольку NaN === NaN это всегда false. Можно так же и не конвертировать - тогда функция вернёт true только в том случае, если параметр NaN в любых остальных случаях вернёт false. const isReallyNaN = (number) => number !== number; console.log(isReallyNaN('5')) // false console.log(isReallyNaN(5 + 'a')) // false console.log(isReallyNaN(NaN)) // true Хз на сколько понятно объяснил, в голове это звучит более понятно😅
Знак восклицательный перед изнан ставят да и ок как бы
Видел, что глобальный isNaN используется для проверки валидности даты
const date = new Date("20233-06-10")
if (isNaN(date.getTime()) return
Кстати можно ещё написать свою функцию проверки NaN. Что типо такого:
const isReallyNaN = (number) =>
Number(number) !== Number(number);
console.log(isReallyNaN('5')) //false
console.log(isReallyNaN(5 + '5')) // false
console.log(isReallyNaN(5 + 'abc')) // true
Если удаётся конвертировать значение параметра то он равняется самому себе и возвращает false. А если допустим это строка и значение не конвертирется в число, то мы получаем NaN !== NaN //true. Поскольку NaN === NaN это всегда false.
Можно так же и не конвертировать - тогда функция вернёт true только в том случае, если параметр NaN в любых остальных случаях вернёт false.
const isReallyNaN = (number) =>
number !== number;
console.log(isReallyNaN('5')) // false
console.log(isReallyNaN(5 + 'a')) // false
console.log(isReallyNaN(NaN)) // true
Хз на сколько понятно объяснил, в голове это звучит более понятно😅