为什么 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
好吧,我已经学习 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