为啥会出现这个bug

注意区分isNaN() / Number.isNaN()isFinite() / Number.isFinite()
■网友
根据 ES 来看。15.1.2.4 isNaN (number)Returns true if the argument coerces to NaN, and otherwise returns false.If ToNumber(number) is NaN, return true.Otherwise, return false.首先看的是 ToNumber 的值,这个在 v8 代码里面也有提及。https://github.com/v8/v8/blob/5.8.43/src/builtins/builtins-global.cc#L196-L199那么接下去实际上看的就是这个 ToNumber 了。在 ECMA 262 标准里面(暂且不管 ES6)关于 ToNumber 是这么描述的。9.3 ToNumberThe abstract operation ToNumber converts its argument to a value of type Number according to Table 12:为啥会出现这个bug
【为啥会出现这个bug】
然后对于字符串的转换在 9.3.1 中,具体的这里就不赘述了,有兴趣可以自行拓展阅读下。如果是空字符串的话 ToNumber 是 0;但是如果是你题目中的问题来说,其 ToNumber 显然是个 NaN。
■网友
字符串当然不是数字,你在想什么?
■网友
JavaScript isNaN() 函数如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false。


    推荐阅读