为什么 NaN 有用,在什么情况下有用

Why is NaN useful and in what situations

好吧,我已经学习 Javascript 3 个月了,并且已经很好地解决了多项任务。在我的书的开头,他们有 NaN 的例子,但他们通常涉及

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true

我什至查看了其他 Whosebug 帖子,但我仍然没有看到我可以在哪里使用它的场景。话虽如此,这个全局 属性 在什么情况下对我有帮助?实际程序中有哪些实际情况?

NaN 在您的值不是数字(但本应是)时最有用。您只会在几个地方从标准 API 返回 NaN,特别是 parseInt:

The parseInt function converts its first argument to a string, parses it, and returns an integer or NaN.

这里的大部分价值在于,一旦 NaN 被引入到数学运算符链中,运算就被定义了(即使它们对初始操作数没有意义,因此产生 NaN) 并将继续 returning NaN。从 the / instructions 中可以看出,大多数数学运算符都有一个子句,如果任一操作数已经不是数字,则立即 return NaN

NaN 是无意义的数学运算产生的数字:

Number('abc'); // NaN
0 / 0;         // NaN
Math.sqrt(-1); // NaN
Math.log(-1);  // NaN
Math.asin(2);  // NaN

当您进行一些数学运算并且某些操作数是 NaN 时,它将传播到结果:

NaN + 2;          // NaN
NaN * 0;          // NaN
1 / NaN;          // NaN
Math.pow(NaN, 2); // NaN