Ключевое различие между ними состоит в том, что глобальная функция isNaN(x)
выполняет преобразование параметра x
в число. Итак,
isNaN("blabla") === true
, потому что Number("blabla")
приводит к NaN
. Здесь есть два определения «не число», и, возможно, это где-то путаница. Number.isNaN(x)
возвращает true только для определения спецификации Notification Number с плавающей точкой IEEE 754, например:
Number.isNaN(Math.sqrt(-1))
, а не для определения, является ли передаваемый объект числовым или нет. Некоторые способы сделать это:
typeof x === "number"
x === +x
Object.prototype.toString.call(x) === "[object Number]"