Is Number.IsNaN()比isNaN()更糟糕吗?

10 浏览
0 Comments

Is Number.IsNaN()比isNaN()更糟糕吗?

在JavaScript中,isNaN似乎存在问题,比如:

isNaN('')
isNaN('   ')
isNaN(true)
isNaN(false)
isNaN([0])

它们都返回false,尽管它们明显都不是数字...

在ECMAScript 6中,草案中包含了一个新的Number.isNaN,但我认为它也有问题...

我本以为

Number.isNaN('RAWRRR')

会返回true,因为它是一个字符串,无法转换为数字...然而...

enter image description here

看起来,我认为的...不是数字的东西,确实不是不是数字...

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-isfinite-number

MDN上的例子说:

Number.isNaN("blabla"); // 如果使用isNaN,这将返回true

我不明白为什么这被称为"原始的isNaN的更健壮版本",因为我无法检查某些东西是否不是一个数字。

这意味着我们仍然需要进行实际的类型检查以及检查isNaN...这似乎很愚蠢...

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-isnan-number

这里的ES3草案基本上说,除了Number.NaN,其他都是false。

还有其他人觉得这个有问题吗?还是我只是没有理解isNaN的用意?

0