JavaScript判断是否为NaN

(旅行是最劳顿,最麻烦,叫人本相必现的时候。经过长期苦旅行而彼此不讨厌的人,才可以结交作朋友。——钱钟书)

在这里插入图片描述

为什么NaN在js值得一提

相信你在实际开发中,经常遇到一下场景

const pasNumber = parseInt(undefined);
console.log(pasNumber); // NaN
console.log(typeof pasNumber === 'number'); // true
console.log(Object.prototype.toString.call(pasNumber)); // '[object Number]'
console.log(NaN === NaN); // false

业务中不可避免的有些字段是空值,但经过转换后会变为NaN值,而在js中NaN的类型无论怎么判断都是数字,并且奇怪的是NaN并不等于NaN。

如何正确的对NaN做出判断

NaN的字面意思是Not-a-Number,其在计算机科学中属于计算中的缺失值。
NaN的由来说明
在js中可以是同isNaN方法来进行判断。

isNaN = function(value) {
    var n = Number(value);//此处对参数进行强制类型转换
    return n !== n;
};
console.log(isNaN(NaN)); // true
console.log(isNaN('123a')); // true
console.log(isNaN([1, 2, 3])); // true
console.log(isNaN({})); // true

但我们发现,因为每次都先将值进行数字强转,导致一些非NaN的值也被误判成了NaN。

所以在es5又给Number添加了isNaN方法,它的源码是这样的。

Number.isNaN = function(value) {
    return value !== value;
};
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN('123a')); // false
console.log(Number.isNaN([1, 2, 3])); // false
console.log(Number.isNaN({})); // false

因为在js中,只有NaN是不等于自身的,所以Number.isNaN更为严谨。

所以,在后续的js编码中,对NaN的处理我们也可以尽量使用Number.isNaN了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值