NaN – 学习画板

首页 » JavaScript » NaN

NaN

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

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

alert(NaN == NaN);     //false;

针对NaN的这两个特点,ECMAScript定义了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串“10”或Boolea值。而任何不能被转换为数值都会导致这个函数返回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”,结果这两个测试都返回了false,因为前者本身就是数值,而后者可以被转转成数值。但是,字符串“blue”不能被转换成数值,因此函数返回了true。由于Boolean值true可以转换成数值1,因此函数返回false。

此文章发表在 JavaScript. 将 固定链接 加入收藏.