Max*_*uxa 5 javascript standards ecmascript-6
虽然函数的名称在isNaN语义上与值相关isNaN,但本机实现会返回true一些非NaN对象,如undefined或{}.
isNaN(undefined);
=> true
Run Code Online (Sandbox Code Playgroud)
我认为,例如,下划线的实现更加直观/合理:
_.isNaN(undefined);
=> false
Run Code Online (Sandbox Code Playgroud)
为什么ECMA标准规定了这种违反直觉的行为?
为什么他们不设计只isNaN返回要测试的值是否
真的并且在单独的函数上测试convertable-to-number的负担呢?true isNaNisNumber
这样做会带来更多优势,例如在测试数字时没有双重否定:
if (isNumber(x)) { } // if x is a number
Run Code Online (Sandbox Code Playgroud)
代替
if (!isNaN(x)) { } // if x is not not a number
Run Code Online (Sandbox Code Playgroud)
由于他们将Number.isNaN()在ECMAScript 6中引入(它完全符合你的期望),看起来有更多的人这样想.
那么,为什么他们首先设计isNaN它的方式呢?这只是一个错误的决定还是有充分的理由这样做?
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |