比较javascript中的NaN

时间:2015-05-12 06:32:37

标签: javascript

在Javascript中,如果我们将字符串与数字相乘,我们得到NaN

 console.log("manas" * 5); // result is NaN    

为什么以下代码会导致false而不是true

console.log("manas" * 5 == NaN)  // results false

5 个答案:

答案 0 :(得分:4)

改为使用isNaN功能。

console.log(isNaN("manas" * 5));

http://www.w3schools.com/jsref/jsref_isnan.asp

NaN,不是数字,是用于表示不可代表值的特殊类型值。使用JavaScript,NaN会引起一些混淆,从typeof和all开始到处理比较的方式。

结果可能会导致一些操作导致NaN。 因为有很多方法来表示NaN,所以有一个NaN不等于另一个NaN是有意义的。

答案 1 :(得分:1)

NaN是一个特殊的数值,它不等于包括它自身在内的任何东西。要正确测试NaN,您需要使用isNaN函数。

来自规范:

  

如果参数强制转换为NaN,则返回true,否则返回false。

以下是同一ECMAScript section

的有用说明
  

ECMAScript代码测试值X是否为NaN的可靠方式是X !== X形式的表达式。当且仅当X是NaN时,结果才为真。

答案 2 :(得分:0)

NaN将不等(通过==,!=,===和!==)与任何其他值(包括另一个NaN值)进行比较。使用Number.isNaN()或isNaN()可以最清楚地确定值是否为NaN。或者进行自我比较:NaN,只有NaN,将比较不等于自身。 Testing against NaN

答案 3 :(得分:0)

Javascript不是那么聪明 - 当==运算符的任何一方都是Nan时,整个事情的评估结果为false(类似于||的左侧是{{1}的方式},它看起来并不困难)

因此,即使false也会返回false。

这是关于楠行为的好文章

http://ariya.ofilabs.com/2014/05/the-curious-case-of-javascript-nan.html

答案 4 :(得分:0)

在Javascript中,

NaN == NaN    //always results false.

(在javascript中,NaN与其自身的自我比较总是错误的)

参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN

另见Is NaN equal to NaN?