如何测试某个事物是否与NaN相同
How to test whether something is identically NaN?
在Javascript中:
NaN === NaN; // false
我试图确定isNaN(foo)
何时不仅仅等同于+foo
"是"NaN
。但我不知道如何判断某个东西是否是NaN
,除非使用isNaN
,它对许多事情都是肯定的,没有一个是===
-NaN。
因此,我认为正确的方法是围绕其他可能性进行工作:
typeof NaN === 'number' // true
因此,我认为
typeof(foo) === 'number' && isNaN(foo)
最接近我的想法。这是有道理的,因为NaN
将是唯一一个不是数字或其他什么的数字。这是正确的吗?这是最好的方法吗?
利用这一点:
foo !== foo
这相当于typeof foo === 'number' && isNaN(foo)
,也是Undercore.js用来检查NaN
的确切值。
NaN不等于其本身的原因是,由于不同的原因,两个计算可能会变成NaN。如果进行两次计算并比较结果,如果其中一个值为NaN,或者两个值都为NaN时,则不希望它们相等。
只要只在数值上使用isNaN
方法,它就可以很好地工作。它为许多其他类型提供了非直观的结果,所以你不应该在数字之外的任何东西上使用它。
如果您可以使用ECMAScript 6,那么您就有了Object.is
:
return Object.is(foo, NaN);
CCD_ 12确定两个值是否是相同的值。如果以下其中一项成立,则两个值相同:
[…]
- 两个
NaN
如果没有定义Object.is
(使用相同的foo!==foo
技巧),MDN还建议使用Polyfill:
if (!Object.is) {
Object.is = function(x, y) {
// SameValue algorithm
if (x === y) { // Steps 1-5, 7-10
// Steps 6.b-6.e: +0 != -0
return x !== 0 || 1 / x === 1 / y;
} else {
// Step 6.a: NaN == NaN
return x !== x && y !== y;
}
};
}
相关文章:
- Javascript如何确定两个对象是否相同
- 如何检查数组的元素在javascript中是否相同(超过2个元素)
- 检查给定的 5 位数字中的所有 5 位数字是否相同
- JavaScript函数中允许的变量和参数名称是否相同
- 检查 2 张图片是否相同
- 比较JavaScript中的两个mill i秒,以确定日期是否相同
- getElementById() 和 getElementByName() 对于 IE9 是否相同?
- 正则表达式检查所有数字是否相同
- clearTimeout和clearInterval是否相同
- jQuery表单验证-检查电子邮件是否相同
- Javascript数组:如何检查两个连续单词是否相同
- 检查文件是否相同
- 如何创建一个HTML5自定义验证,检查插入到2个电子邮件inout字段的值是否相同
- 如何在javascript中检测值是否相同或不同
- Javascript:检查多个数组值是否相同(顺序很重要)
- 如何在TypeScript中发现两个字符串是否相同
- 检查电话号码是否相同以及最后7位数字是否相同的正则表达式
- 如何检查是否相同的图像或其他图像或其他东西,而不是图像被点击
- 检查两个字符串的大小和值是否相同
- 如何检查用户名是否相同?Json数组