通常会在运算过程中产生:
console.log('abc' / 4);
console.log(4 * 'a');
虽然它 "不是一个数字",但是 NaN 的 typeof 结果却是 number:
console.log(typeof (4 * 'a')); // number
NaN 和任何变量都不相等,包括 NaN 自己:
console.log(NaN === NaN); // false
判断一个变量是不是 NaN 可以用 isNaN()
函数,但是这并不是一个完美的函数,有些时候用value !== value似乎更准确,幸运的是,ES6 已经有Number.isNaN()方法,将比 isNaN()准确的多。
NaN 意指“不是一个数字”(not a number),NaN 是一个“警戒值”(sentinel value,有特殊用途的常规值),用于指出 数字类型中的错误情况,即“执行数学运算没有成功,这是失败后返回的结果”。
typeof NaN; // "number"
NaN 是一个特殊值,它和自身不相等,是唯一一个非自反(自反,reflexive,即 x === x 不成立)的值。而 NaN != NaN 为 true。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。