NaN是什么? isNaN()/Number.NaN

1、NaN是什么?

NaN(Not a Number),是number数值类型的一类值,表示未定义或不可表示的值。

2、NaN是如何产生的?

它是在执行算术运算时,产生的一种结果:对不同数据类型进行算术运算就会产生NaN(一部分会产生)。

看代码:

<script> 
        //非数值字符串- 非字符串类型 == NaN
        console.log("aaa"-100) //NaN
        console.log("aaa"-true) //NaN
        console.log("aaa"-"bbb") //NaN

        //运算中有NaN,结果是NaN
        console.log(100+NaN)  //NaN
        console.log(true+NaN)  //NaN

        //非数值字符串 + 非字符串类型 == 字符串拼接
        console.log(NaN+"111") //NaN111
       
        //数值字符串 - 非字符串类型 == 正常运算
        console.log("111"-true) //110
        console.log("111"-100) //11
        //number+-Boolean == 正常运算
        console.log(222-true) //221
        console.log(true+22) //23   
</script>

如果算术运算中有一方是NaN,在另外一方不是字符串的情况下,结果是NaN

如果算术运算中一方是 非数值字符串,不管另外一方是什么数据类型,在进行 相减的运算中,结果都是NaN

字符串和任何数据类型相加都会进行字符串拼接,结果是字符串类型,跟NaN相加的结果也是字符串。

3、isNaN()检测一个值是否等于NaN?

它的原理是:在检测时,先把参数用Number转换成数值类型,然后再判断是不是NaN。

代码:

<script> 
        console.log(isNaN(111)) //false
        console.log(isNaN(true)) //false
        console.log(isNaN("111")) //false
        console.log(isNaN([1])) //false 数组一个值是false
        console.log(isNaN([])) //false

        console.log(isNaN("aaa")) //true 字符串
        console.log(isNaN(NaN)) //true 数值
        console.log(isNaN({name:"yiyi"})) //true 对象
        console.log(isNaN([1,2,3])) //true 数组多个值是true
        console.log(isNaN(["aaa","bbb","ccc"])) //true 数组
</script>
isNaN("aaa") // true
// 相当于
isNaN(Number("aaa")) // true

除了NaN本身是true之外,字符串,对象,多值数组都是true。

所以在使用isNaN之前,最好先判断一个数据类型。

 注意:NaN不等于它本身NaN

NaN==NaN //false
NaN===NaN //false

但是isNaN这个办法判断不准确,很多类型都可以是true,如果想要更准确判断是不是NaN本身,用Number.isNaN这个办法:只有NaN本身才为true。

console.log(Number.isNaN("111")) //false
console.log(Number.isNaN(111)) //false
console.log(Number.isNaN(NaN)) //true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陌一一

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值