如果我想测试表达式的结果,并且该函数将返回 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top