JS中的NaN

什么是NaN?它的类型是什么?如何可靠地测试一个值是否等于NaN?

NaN属性表示“不是数字”的值。这个特殊值是由于一个操作数是非数字的(例如“abc”/ 4)或者因为操作的结果是非数字而无法执行的。

虽然这看起来很简单,但NaN有一些令人惊讶的特征,如果人们没有意识到这些特征,就会导致bug。

一方面,虽然NaN的意思是“不是数字”,但它的类型是,数字:

console.log(typeof NaN === "number"); // logs "true"

 此外,NaN相比任何事情 - 甚至本身! - 是false: 

console.log(NaN === NaN); // logs "false"

 

测试数字是否等于NaN的半可靠方法是使用内置函数isNaN(),但即使使用 isNaN()也不是一个好的解决方案。.

一个更好的解决方案要么是使用value!==值,如果该值等于NaN,那么只会生成true。另外,ES6提供了一个新的Number.isNaN()函数 ,它与旧的全局isNaN()函数不同,也更加可靠。

 

posted @ 2019-01-17 17:28  Mahmud(مەھمۇد)  阅读(340)  评论(0编辑  收藏  举报