JS中Number类型的NaN值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhoujingying22/article/details/51200112

NaN,即非数值(Not a Number),有点奇怪的是:

alert(NaN == NaN);      //false
alert(NaN != NaN);      //true

为什么呢?

首先,NaN的主要职能是作为返回值,当一个本来要返回数值的操作数未返回数值时(如0除以0),在其他编程语言中,程序会报错,而在JS中,系统会返回NaN

其次,问题原因就是ES规定的NaN的两个特点(规范设定)

  • 任何涉及NaN的操作都会返回NaN
  • NaN与任何值都不相等,包括NaN本身

针对和两个特点,ES定义了isNaN()函数,接受一个函数(可以是对象),作用是判断这个参数是否 “不是数值”,并尝试将参数转换为数值

alert(isNaN(10));         //false
alert(isNaN("10"));       //false (可以转换为10)
alert(isNaN("blue"));     //true 
alert(isNaN(true));       //false (可以转换为1)
展开阅读全文

没有更多推荐了,返回首页