你如何在JavaScript中测试NaN?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了你如何在JavaScript中测试NaN?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2018字,纯文字阅读大概需要3分钟。
内容图文
![你如何在JavaScript中测试NaN?](/upload/InfoBanner/zyjiaocheng/714/aa2f6cbca6e24173854fb0916b4b5ee2.jpg)
我有一个变量x,我想测试x是否设置为NaN.我怎么做?
我的第一直觉可能就是测试它,就像这样:
if (x === NaN) { ...
傻兔子,不,这太容易了. NaN在SQL中就像NULL,它不等于任何东西,甚至本身.
但是看,有一个名为isNaN()的函数 – 也许会这样做!
不,就我所知,isNaN()完全没有价值.
例如,isNaN([“”])正确返回false,但isNaN([“.”])返回true.你不想知道我是如何了解这个缺陷的.
我该怎么做呢?
事实证明,我的问题是this one的重复,但选择的答案是错误的. right answer的赞成票数为20%.
解决方法:
简答
对于ECMAScript-5用户:
#1
if(x !== x) {
console.info('x is NaN.');
}
else {
console.info('x is NOT a NaN.');
}
对于使用ECMAScript-6的人:
#2
Number.isNaN(x);
为了保持ECMAScript 5& 6,两者,你也可以使用这个polyfill for Number.isNan
#3
//Polyfill from MDN
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}
// Or
Number.isNaN = Number.isNaN || function(value) {
return value !== value;
}
注意:我更喜欢使用#1进行测试,它在所有地方都工作,并且也不依赖于最新的JS. (它总是给我正确的结果.没有惊喜!)
详细说明:
这是我们真棒的NaN
NaN == NaN; // false
NaN === NaN; // false
请不要因为这个而责怪JavaScript,它应该在其他语言中以这种方式运行的NaN也很好,按照rationale for all comparisons returning false NaN values
因此,作为我们的救世主的是NaNN,但在某些情况下等待它的行为却没有什么不同
isNaN(undefined); // true
isNaN({}); // true
isNaN("lorem ipsum"); // true
看到上面的结果,我有一些奇怪的面孔.这是MDN的原因
When the argument to the isNaN function is not of type Number, the value is first coerced to a Number. The resulting value is then tested to determine whether it is NaN.
那么我们应该如何测试NaN的非数字变量呢?我总是通过以下方式
if(x !== x) {
console.info('Is a NaN');
}
else {
console.info('Not a NaN');
}
ECMAScript-6 / JavaScript-2015更新
我们在ECMAScript-6中有什么相同的东西.是的,我们做…
Number.isNaN(x); // true
ES6实现也将有助于上述情况,如
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN("lorem ipsum"); // false
而对于上述情况,ECMAScript-5全局函数isNaN输出为true,有时可能与我们的预期不一致.
内容总结
以上是互联网集市为您收集整理的你如何在JavaScript中测试NaN?全部内容,希望文章能够帮你解决你如何在JavaScript中测试NaN?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。