NaN的定义与用法

NaN 概念及用法

  1. NaN 是一个什么?
    • NAN 翻译过来及 not a number (不是一个数值) 这是一个特殊的属性, 这个数值表示本来要返回数值的操作数未返回数值的情况.

var box = 0/0 //NaN

var box = 12/0 //INfinity

var box=12/0*0 //NaN

  1. 可以通过Namber.NaN得到NaN 的值, 任何类型的值与NAN进行运算的结果都是NAN,NAN与自身是不等的即 NAN 不等于 NAN

    console.log(Number.NaN) //NaN

    console.log(NaN + 1) //NaN

    console.log(NaN == NaN) //false

    这些都是可以通过演示得出的

isNaN() 函数

  1. 什么是 isNaN() ? 带有小括号的即都为函数,这个函数可以翻译为 is not a number (是,这不是一个数值) .isNaN()函数在接收到一个值后,会尝试将这个值转换成数值 .

    console.log(isNaN(NaN)); //true;

    console.log(isNaN(25)); //false 25是个数值

    console.log(isNaN('25')); //false '25'是一个字符串数值,可以转换成数值

    console.log(isNaN('Lee')); //true 'Lee'是个字符串,不能转化成数值

    console.log(isNaN(true)); //false true可以转换成1

isNaN()函数也适用于对象,在调用函数过程中,首先会调用valueOf()方法,然 后确定返回值是否能够转换成数值。如果不能,则基于这个返回值再调用 toString()方法, 再测试返回值

1
2
3
4
5
6
var box={
toString:function(){
return 'lee';
}
};
console.log(isNaN(box));

有三个函数可以把非数值转换成数值:Number()、parseInt()和parseFloat()。Number()是转换型函数,可以用于任何数据类型,而另外两个则专门用于把字符串转换成数值。

1
2
3
4
console.log(Number(true));      //1,Boolean类型的true和false分别转换成1和0
console.log(Number(25)); //25,数值类型直接返回
console.log(Number(null)); //0,空对象返回0
console.log(Number(undefined));//NaN,undefined返回NaN

​ 如果是对象,首先会调用valueOf()方法,然后确定返回值是否能够转化成数值。如果转化的结果是NaN,则基于这个返回值再调用toString()方法,在测试返回值。

1
2
3
4
5
6
7
8
9
10
11
12
13
var box={
toString:function(){
return '123';
}
};
console.log(Number(box)); //123

var box={
toString:function(){
return 'lee';
}
};
console.log(Number(box)); //NaN

由于Number()函数在转换字符串时比较复杂且不够合理,因此在处理整数的时候更常用的是parseInt()。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
console.log(parseInt('465lee'));             //465,返回整数部分
console.log(parseInt('lee465lee')); //NaN,如果第一个不是数值,就会返回NaN
console.log(parseInt('12lee56lee')); //12,从第一个数值开始取,到最后一个连续数值结束
console.log(parseInt(56.12)); //56,小数点不是数值,会被去掉。
console.log(parseInt('')); //NaN,空返回NaN

parseInt()除了可以识别十进制数,开可以识别八进制和十六进制。
console.log(parseInt('0xA')); //10,十六进制
console.log(parseInt('070')); //56,八进制
console.log(parseInt('0xALee')); //100,十六进制,Lee被自动过滤

ECMAScript为parseInt()提供了第二参数,用于解决各种的进制转换。
console.log(parseInt('0xAF')); //175,十六进制
console.log(parseInt('AF',16)); //157,第二参数指定十六进制,可以去掉0x前导
console.log(parseInt('AF')); //NaN,这里看作字符串,理所当然Na
console.log(parseInt('101010101',2)); //314,二进制转换
console.log(parseInt('70',8)); //56,八进制转换

parseFloat()是用于浮点数值的转换,和parseInt()一样,从第一位解析到浮点数值位置。
console.log(parseFloat('123Lee')); //123,去掉不能识别的部分
console.log(parseFloat('0xA')); //0,不认识十六进制
console.log(parseFloat('123.4.5')); //123.4,只认一个小数点
console.log(parseFloat('0123.400')); //123.4去掉前后导
console.log(parseFloat('1.234e7')); //12340000,把科学计数法转换成普通数值
上面也介绍了NaN是什么,也介绍了几个其他属性的方法,具体案例具体看待,上面只是介绍了几个案例,其实还是需要自己去琢磨的,加油!!!
文章目录
  1. 1. NaN 概念及用法
    1. 1.0.0.1. isNaN() 函数
      1. 1.0.0.1.1. 上面也介绍了NaN是什么,也介绍了几个其他属性的方法,具体案例具体看待,上面只是介绍了几个案例,其实还是需要自己去琢磨的,加油!!!
|