JavaScript中的NaN有什么用法

  • 2021-06-24 21:06:38
  • 2,149 次阅读
  • 稿源:天马行空

NaN,即非数值( Not a number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛岀错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在 ECMAScript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。

NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。例如,下面的代码会返回 false:

alert(NaN==NaN);//false

针对NaN的这两个特点, ECMAScript定义了 luNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。 isNaN()在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串”10″或 Boolean值。而任何不能被转换为数值的值都会导致这个函数返回true。请看下面的例子:

alert(isNaN(NaN)); //true

alert(isNaN(10)); // false(10是一个数值)

alert(isNaN(“10”)); // false(可以被转换成数值10)

alert(isNaN(“blue”)); //true(不能转换成数值)

alert(isNaN (true)); //false(可以被转换成数值1)

这个例子测试了5个不同的值。测试的第一个值是NaN本身,结果当然会返回true。然后分别测试了数值10和字符串”10″,结果这两个测试都返回了fa1se,因为前者本身就是数值,而后者可以被转换成数值。但是,字符串”blue”不能被转换成数值,因此函数返回了true。由于Boolean值true可以转换成数值1,因此函数返回false。

尽管有点儿不可思议,但主sNaN()确实也适用于对象。在基于对象调用主isNaN()函数时,会首先调用对象的valueOf()方法,然后确定该方法返回的值是否可以转换为数值。如果不能,则基于这个返回值再调用 toString()方法,再测试返回值。而这个过程也是 ECMAScript中内置函数和操作符的一般执行流程。

TAG:
喜欢 0

文章评论 (0)

表情

大眼 可爱 大笑 坏笑 害羞 发怒 折磨 快哭了 大哭 白眼 晕 流汗 困 腼腆 惊讶 憨笑 色 得意 骷髅 囧 睡觉 眨眼 亲亲 疑问 闭嘴 难过 淡定 抗议 鄙视 猪头