2014-12-06 59 views

回答

2

NaN属性表示“不是数字”的值。这个特殊的值是由于一个操作数是非数字的(例如“abc”/ 4)或者因为操作的结果是非数字的(例如,尝试分割由零)。

虽然这看起来很简单,但NaN的一些有些令人惊讶的特征可能会导致毛病,如果一个人不知道它们。

一方面,尽管为NaN表示“不是一个数字”,它的类型,无论你相信与否,编号:

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

此外,NaN的比什么 - 甚至本身! - 是假的:

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

一个半可靠的方法来测试一个数是否等于楠与内置函数isNaN(), 但即使使用isNaN() is an imperfect solution.

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

+0

'typeof value ===“number”&& isNaN(value)''? – Tomalak 2014-12-06 09:27:20

+0

这也是一个很好的解决方案。 – user2466202 2014-12-06 09:31:18

相关问题