有两个isNaN方法,分别是window.isNaN和es6中Number.isNaN
Number.isNaN用来检查该参数是否为NaN,只判断一个NaN值,其他不是数字的参数,同样会返回false,因为他们不是NaN
Number.isNaN(NaN);//true
Number.isNaN(15);//false
Number.isNaN('15') // false
Number.isNaN(true) // false
Number.isNaN(9/NaN) // true
Number.isNaN('true'/0) // true
Number.isNaN('true'/'true') // true
也就是说Number.isNaN中参数是NaN则会返回true,否则回返回false.
但全局上的isNaN,则会先进行Number()转换,也就是说得先看参数可不可以是数字.
isNaN(NaN);//true
isNaN(123);//false
isNaN('123');//false
isNaN(true);//false
isNaN('foo');//true
:::info 两者同样的是传入NaN会返回true,不同的是Number.isNaN只能判断参数是不是NaN这种类型,而window.isNaN则会先进行Number()转换,换句话说,不仅能判断是不是NaN类型,还可以判断参数是否是数字 :::