Итак, давайте разберемся, что такое NaN в JS. NaN означает НЕ ЧИСЛО. Если мы копнем глубже, NaN не означает буквально не число, а, по сути, то, что он представляет, является недопустимым числом. Итак, если мы рассмотрим приведенный ниже код, то увидим, что мы не можем сравнивать значение NaN с самим собой, а это означает, что NaN — единственное значение в JS, которое мы не можем сравнивать с самим собой.

let myAge = Number('27');
console.log(`My Age is: ${myAge}`); // This will print 27 to the console
let gibberish = Number('v&*r');
console.log(gibberish); // This will print NaN to the console
let anotherGibberish = Number('y%6ui');
console.log(anotherGibberish); // This will print NaN to the console
console.log(gibberish === anotherGibberish); // This will print false to the console. But why??

Также вы можете заметить, что тип NaN — это число, что странно, но мы говорим о JS. Шучу, ребята!

console.log(typeof(NaN)); // Returns "number"

Итак, что теперь делать, если мы хотим проверить, является ли что-то NaN? Затем возникает картина isNaN(passedval), которая сначала преобразует переданное значение в число, а затем проверяет, является ли значение NaN, и, соответственно, возвращает либо true, либо false. Это хорошо, но есть некоторые оговорки, как показано в приведенном ниже коде:

let myAge = 27;
let sayHello = "Say Hello";
console.log(isNaN(myAge)); // False
console.log(isNaN(sayHello)); // True

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

let myAge = 27;
let sayHello = "Say Hello";
console.log(Number.isNaN(myAge)); // False
console.log(Number.isNaN(sayHello)); // False

Надеюсь, вы смогли понять NaN и другие концепции, связанные с ним. Пока продолжаю учиться.