Каков результат 'typeof NaN' в JavaScript?

Разбираем 'typeof NaN' в JavaScript

В JavaScript, при использовании оператора 'typeof' с NaN (Not a Number), вы получите результирующую строку 'number'. Да, это может показаться немного странным, но это связано с внутренним представлением NaN в языке программирования JavaScript.

NaN в JavaScript используется для представления значения, которое не является допустимым числом. Однако, по определению, NaN классифицируется как свойство глобального объекта Number и, следовательно, 'typeof NaN' возвращает 'number'.

Примеры использования NaN в JavaScript

Ниже представлены несколько примеров, которые могут привести к NaN в JavaScript:

console.log(Math.sqrt(-1)); // NaN
console.log(0 / 0); // NaN
console.log(Number('Some text')); // NaN

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

Проверка на NaN

Несмотря на то, что 'typeof NaN' возвращает 'number', проверка на NaN в JavaScript немного усложняется из-за того, что NaN не равно самому себе.

console.log(NaN === NaN); // false

Вместо использования '==' или '===', вы можете использовать функцию 'isNaN()' для проверки, является ли значение NaN.

console.log(isNaN(NaN)); // true

На самом деле, существуют некоторые сложности и недостатки в использовании isNaN(), но это более глубокая тема, выходящая за рамки данного обсуждения.

В заключении, кажущееся противоречием 'typeof NaN' возвращающего 'number' в JavaScript связано с внутренним представлением NaN в языке. Оператор 'typeof' идентифицирует NaN как число, поскольку таковым и является его официальное вид в спецификации JavaScript.

Related Questions

Считаете ли это полезным?