Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何可靠地测试值是否等于NaN?_Javascript - Fatal编程技术网

Javascript 如何可靠地测试值是否等于NaN?

Javascript 如何可靠地测试值是否等于NaN?,javascript,Javascript,我只知道使用isNaN来测试一个值是否等于NaN。它真的可靠吗?NaN属性表示一个“不是数字”的值。此特殊值是由于一个操作数为非数字(例如“abc”/4)或操作结果为非数字(例如试图除以零)而无法执行的操作而产生的 虽然这看起来很简单,但NaN有一些令人惊讶的特性,如果不知道它们,可能会导致毛发拉扯错误 首先,尽管NaN的意思是“不是数字”,但信不信由你,它的类型是数字: console.log(typeof NaN === "number"); // logs "true" 此外,NaN与

我只知道使用isNaN来测试一个值是否等于NaN。它真的可靠吗?

NaN属性表示一个“不是数字”的值。此特殊值是由于一个操作数为非数字(例如“abc”/4)或操作结果为非数字(例如试图除以零)而无法执行的操作而产生的

虽然这看起来很简单,但NaN有一些令人惊讶的特性,如果不知道它们,可能会导致毛发拉扯错误

首先,尽管NaN的意思是“不是数字”,但信不信由你,它的类型是数字:

console.log(typeof NaN === "number");  // logs "true"
此外,NaN与任何东西相比——甚至是它自己是假的:

console.log(NaN === NaN);  // logs "false"
测试数字是否等于NaN的半可靠方法是使用内置函数isNaN(), 但即使使用


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

请参见此处:
typeof value==“Number”和&isNaN(value)
?这也是一个很好的解决方案。