关于javascript:判断一个值是否为NaN

在js中,NaN的意思是not a number,它是一个比拟非凡的值。

NaN的个性

首先,它是number类型。

typeof NaN; // number

其次,尽管是number类型,然而咱们没法确定它的值到底是多少。

1 < NaN; // false
1 == NaN; // false
1 > NaN; // false

因为没法确定NaN的值,所以即便是NaN本人跟本人也不相等。

let a = NaN;
let b = NaN;

a == b; // false

那么,如何判断一个值是不是NaN呢,直接判断必定不行啊。

let a = NaN;

a == NaN; // false

用全局函数isNaN()

全局 isNaN() 函数将测试值转换为数字,而后对其进行测试。

isNaN(123) //false
isNaN(-1.23) //false
isNaN(5-2) //false
isNaN(0) //false
isNaN('123') //false
isNaN('Hello') //true
isNaN('2005/12/12') //true
isNaN('') //false
isNaN(true) //false
isNaN(undefined) //true
isNaN('NaN') //true
isNaN(NaN) //true
isNaN(0 / 0) //true
isNaN(null) //false

本人实现一个

咱们的思路是:尽管NaN的值不确定,它连本人都不等于本人,然而它转换为字符串后的值是确定的,就是'NaN'

NaN.toString(); // 'NaN'

所以咱们能够把测试值转换为数字后,再转换为字符串,用失去的值去跟字符串'NaN'做比拟。

function isNaNFake(val) {
  return `${Number(val)}` == 'NaN';
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理