为什么NAN和包括自己的所有值都不相等

1、MDN对NaN的定义

【1】:MDN里面这样描述

The global NaN property is a value representing Not-A-Number.

NaN是一个放在global(浏览器里是window)对象的一个value,是一个代表not a number的value

【2】:NAN的类型

console.log(typeof(NaN))  //number

NaN表示一个非数字的值,但是它的类型却属于number;

2、NAN出现的情况

【1】:手动类型转换

Number("我") ;  //NaN

【2】:自动类型转换

2 - "str"; //NaN

这里进行操作符运算,在进行-、*、/、%等运算时,会将非number类型转换为number类型,如果非number转换为number的返回结果是NaN,那么计算结果就返回NaN;

NaN它不是一个值,非要说NaN是一个值得话,那么 NaN 就是除过数字的任意值,但绝不是确切的某一个值!

3、判断是否为NAN的方法:isNAN和Number.isNAN()

举例:

console.log(isNaN(NaN));  // true
console.log(isNaN("a string")) ; //true
console.log(isNaN(undefined)) ;  //true
console.log(isNaN({})) ; //true
console.log(Number.isNaN(NaN)) ; //true
console.log(Number.isNaN("a string")) ; //false
console.log(Number.isNaN(undefined)) ;  //false
console.log(Number.isNaN({})) ;  //false

isNaN()方法局限在“Not a number” 这一字面意思上了,只要不是number就返回true。这个bug存在20年了。

Number.isNaN()是在ES6引入的,只有是NaN的情况下才会返回true;

参考文档:https://nicholaslee119.github.io/2017/10/30/windowIsNan%E5%92%8CnumberIsNan%E7%9A%84%E5%8C%BA%E5%88%AB/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值