点击上方蓝字关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!
JavaScript中,NaN是一个比较槽糕的特性设计,它表示的不是一个数字(一个本来要返回数值的操作数未返回数值的情况—这样就不会抛出错误了),尽管下面这几个结论让人觉得有点惊讶:
一,NaN数据类型是Number
console.log(typeof NaN === 'number')
输出:true
二,将非数字形式的字符串转换为数字时产生
console.log(isNaN('3'))
输出:false (3)
console.log(isNaN('33xiao'))
输出:true(NaN)
如果NaN是数学运算中的一个运算数,那么结果就是NaN。所以,如果你有一个公式链产生出NaN的结果,那肯定要么其中一个输入项是NaN,要么在某个地方产生了NaN。
三,NaN不等同于它自己
如上第二点代码所示,可以使用isNaN内置函数对它进行一个检测,注意,NaN不等同于它自己,如下代码:
NaN === NaN
输出:false
NaN !== NaN
输出:true
四,如何判断一个值是否可用做数字
判断一个值是否可用做数字的最佳方法是使用isFinite函数,因为它会筛除掉NaN和Infinity。但是,isFinite会试图把它的运算数转换为一个数字,所以,如果值事实上不是一个数字,它就不是一个好的测试,因此我们可以像下面这样,封装一个函数来处理。如下代码:
总结:
目前发现isNaN其实也太靠谱,用的少,所以记住第四点。
閱讀更多 小鄭搞碼事 的文章
關鍵字: 技术 JavaScript 数字