题
如果我想测试表达式的结果,并且该函数将返回 NaN
我该如何检查?
例子: $('amount').value.toInt()!='NaN'
^ 不起作用,我假设返回的值不是字符串,
$('amount').value.toInt()!=NaN
^ 似乎也不起作用,这似乎是显而易见的
那么如何检查返回值是否不是数字呢?
解决方案
NaN 值被定义为不等于一切,包括它本身。测试一个值是否为 NaN isNaN()
功能齐全,恰到好处。(ECMAScript 6 添加了 Number.isNan()
对于非数字参数具有不同语义的函数,但截至 2015 年,并非所有浏览器都支持它)。
有两个可用 NaN 值的内置属性:全球的 NaN
财产(即 window.NaN
在浏览器中),以及 Number.NaN
. 。这是 不是 语言关键字。在较旧的浏览器中, NaN
属性可能会被覆盖,可能会产生令人困惑的结果,但是 ECMAScript 5 标准使其不可写.
- 正如@some在评论中指出的,还有全局函数 isFinite() 这可能有用。
其他提示
所要检查的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的始终是真实的,所以我们可以利用这一点,并比较结果对自身)
<强>这是JavaScript的(良好和奇异语言)强>
平等运算符(==和===)不能被用于测试针对NaN的一个值。使用Number.isNaN()或isNaN()代替。
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
不隶属于 StackOverflow