Почему isNaN работает неправильно?

Поділитися
Вставка
  • Опубліковано 1 жов 2024
  • В js есть глобальная функция isNaN и метод Number.isNaN в чем разница? Почему первый сломает вам сайт?

КОМЕНТАРІ • 3

  • @ДмитрийДмитриевич-ы2о

    Знак восклицательный перед изнан ставят да и ок как бы

  • @vadimkun8793
    @vadimkun8793 4 місяці тому +2

    Видел, что глобальный isNaN используется для проверки валидности даты
    const date = new Date("20233-06-10")
    if (isNaN(date.getTime()) return

  • @S-mkrtchian
    @S-mkrtchian 4 місяці тому +1

    Кстати можно ещё написать свою функцию проверки 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
    Хз на сколько понятно объяснил, в голове это звучит более понятно😅