Number()、isNaN()、Number.isNaN()

329 阅读2分钟

NaN: 全称为 not a number,理解为不是一个数值。表示一个存储数据的数据类型。

1. Number()

总结

  • true 和 false ---> 转化为数字1和0
  • null、空数组[]、空字符串'' 、空格字符串' ' --->转化成数字0
  • 空对象{}、undefined、非数字字符串--->转化成 NaN
  • 空字符串,空格字符串,数字字符串 --->转化为数值
  • 对于数组的话,看如下

2. isNaN()

结论:对于可以被Number转换为数值的值x,那么isNaN(x)就是false,如果不可以被Number转换为数值的y,那么isNaN(y)就是true。

对于 Date() 这种特殊对象来说:

3. NaN值

NaN值产生:当算法运算返回一个未定义的或无法表示的值,NaN就产生了。但NaN并不一定用于表示某些值超出表示范围的情况,将某些不能强制转化为数值的非数值转化为数值的时候,也会得到NaN。

例如,0除以0会返回NaN ---- 但是其他数除以0则不会返回NaN

4. isNaN()和Number.isNaN()区别:

  • isNaN的本意是:通过Number()方法尝试将参数转换成Number类型,如果成功返回false,失败返回true,即isNaN只是判断传入的参数是否能转换为数字,并不是严格的判断是否等于NaN。

  • Number.isNaN 是判断传入的参数是否严格等于NaN(也就是 ===)

(ES6中 Number.isNaN() 用来判断是否属于数字)

  • isNaN()与Number.isNaN()最大的区别: Number.isNaN()不存在类型转换的行为

其他注意点

  • NaN == NaN --> false

原因: javaScript规定:NaN表示的是非数字,那么这个非数字可以是不同的数字,因此NaN不等于NaN。注:两个NaN永远不相等

  • 有非数值参加运算,结果都是NaN

  • 如果是 +运算 ,则进行字符串拼接操作