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