NaN的实施背后的原因是什么?

时间:2013-12-16 18:47:22

标签: javascript standards ecmascript-6

虽然函数isNaN的名称在语义上与值isNaN相关,但对于true之类的非NaN对象,本机实现会返回undefined{}

isNaN(undefined);
=> true

我认为,例如,下划线的实现更加直观/合理:

_.isNaN(undefined);
=> false

为什么ECMA标准规定了这种违反直觉的行为?

为什么他们不设计isNaN只返回true 如果要测试的值是 真的 isNaN并且负担在单独的isNumber函数上测试convertability-to-number的负担?

在测试数字时,这样做会带来更多优势,例如没有双重否定

if (isNumber(x)) { } // if x is a number

而不是

if (!isNaN(x)) { }   // if x is not not a number

由于他们将在ECMAScript 6中引入Number.isNaN()(这完全符合您的期望),看起来有更多人会这样想。

那么,为什么他们首先设计isNaN的方式呢?这只是一个错误的决定还是有充分的理由这样做?

0 个答案:

没有答案