基本数据类型 | 深入理解isNaN()函数和Number.isNaN()函数以及两者的兼容性处理


1. 两者的区别

  isNaN()函数在判断是否为NaN时,需要先进行数据类型转换,只有在无法转换为数字时才会返回true

  Number.isNaN()函数在判断是否为NaN时,只需要判断传入的值是否为NaN不会进行数据类型转换。

关键词数据类型转换


2. 实例

2.1 isNaN()函数

  结果为true的情况


isNaN(NaN) //true
isNaN(undefined) //true
isNaN({}) //true
isNaN("JavaScript") //true
isNaN(new Date().toString) //true 返回的是一串字符串表示的时间,无法转换成数值类型

  结果为false的情况


isNaN(123) //false
isNaN(true)//false
isNaN(false)//false
isNaN("1")//false
isNaN(") //false 转换为0
isNaN(new Date())//false   时间戳


2.2 Number.isNaN()函数

  ES6中的Number.isNaN()函数会在真正意义上去判断变量是否为NaN,不会做数据类型转换。只有在传入的值为NaN时,才会返回true,传入其他任何类型的值时会返回false

  只存在一种结果为true的情况,即传入的值为NaN时。



Number.isNaN(NaN) //true

兼容性处理

  如果在非ES6环境中想用ES6中的isNaN()函数,可参考以下兼容性处理方案。

if(!Number.isNaN){
	Number.isNaN = fucntion(n){
		return n != n;
	}
}

  在所有类型的数据中,如果一个变量和自身作比较,只有在变量值为NaN时才会返回false,其他情况都是返回true。所以n !== n返回true,只有在n为NaN的时候才成立。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值