JS中Number类型的NaN值

来源:互联网 发布:网络协议的教学反思 编辑:程序博客网 时间:2024/06/05 22:32

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

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

为什么呢?

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

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

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

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

alert(isNaN(10));         //falsealert(isNaN("10"));       //false (可以转换为10)alert(isNaN("blue"));     //true alert(isNaN(true));       //false (可以转换为1)
0 0
原创粉丝点击