如果我想测试表达式的结果并且函数将返回 NaN 我将如何检查?
示例:$('amount').value.toInt()!='NaN'
^ 不起作用,我假设返回的值不是字符串,
$('amount').value.toInt()!=NaN
^ 似乎也不起作用,这似乎很明显
,所以我如何检查返回的值是否不是数字?
lock
问问题
2039 次
3 回答
36
NaN 值被定义为不等于一切,包括它自己。用函数测试一个值是否为 NaN isNaN()
,足够恰当。(ECMAScript 6Number.isNan()
为非数字参数添加了一个具有不同语义的函数,但截至 2015 年尚未在所有浏览器中支持)。
NaN 值有两个可用的内置属性:全局NaN
属性(即window.NaN
在浏览器中)和Number.NaN
. 它不是语言关键字。在较旧的浏览器中,该NaN
属性可能会被覆盖,可能会产生令人困惑的结果,但在ECMAScript 5 标准中,它被设置为不可写。
- 正如@some 在评论中指出的那样,还有一个全局函数isFinite()可能有用。
于 2009-02-18T04:04:13.417 回答
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(一种优秀而奇怪的语言)
于 2014-09-23T15:58:05.940 回答
1
等式运算符(== 和 ===)不能用于针对 NaN 测试值。请改用 Number.isNaN() 或 isNaN() 。
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
于 2014-05-13T15:51:25.923 回答