javascript中NaN的保留关键字是什么?

时间:2009-02-18 04:02:59

标签: javascript nan

如果我想测试表达式的结果,函数将返回NaN 我该怎么检查?
示例:
$('amount').value.toInt()!='NaN' <^不起作用,我假设返回的值不是字符串,
$('amount').value.toInt()!=NaN ^ ^似乎也不起作用,这个似乎很明显
那么如何检查返回值是不是数字?

3 个答案:

答案 0 :(得分:36)

NaN值定义为与所有内容不相等,包括其自身。使用isNaN()函数测试值是否为NaN,足够恰当。 (ECMAScript 6为非数字参数添加了一个具有不同语义的Number.isNan()函数,但截至2015年,它并未在所有浏览器中都受支持。)

有两种内置属性可用,具有NaN值:全局NaN属性(即浏览器中的window.NaN)和Number.NaN。它不是 语言关键字。在较旧的浏览器中,NaN属性可能会被覆盖,可能会导致令人困惑的结果,但使用ECMAScript 5 standard it was made non-writable

  • 正如@some在评论中指出的那样,还有全局函数isFinite()可能有用。

答案 1 :(得分:2)

检查针对NaN的数值运算结果的最佳方法是这样做, 例如:

var x  = 0;
var y  = 0;
var result = x/y;  // we know that result will be NaN value
// to test if result holds a NaN value we should use the following code :

if(result !=result){
console.log('this is an NaN value');
} 

已经完成了。

诀窍是NaN无法与任何其他值进行比较,即使是自我(NaN!= NaN总是如此,所以我们可以利用这个并将结果与​​自身进行比较)

这是JavaScript(一种优秀而奇特的语言)

答案 2 :(得分:1)

等式运算符(==和===)不能用于测试针对NaN的值。使用Number.isNaN()或isNaN()代替。

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true