为什么' Infinity',' null',' NaN'并且' undefined'套管不一致?

时间:2016-07-12 15:10:54

标签: javascript

在JavaScript中,语言构建了“Infinity'”,“' null',' NaN'并且' undefined'套管不一致。

它是历史性的,还是有背后的意图?

2 个答案:

答案 0 :(得分:3)

没人知道。 : - (

(原始答案如下)

纯粹猜测,但......

  • null undefined 是一个JavaScript关键字 s ,反映了各种“非价值”元组合。我知道的所有关键字都是小写的(c.f。truefalse);
  • undefined是一个全局属性,代表更多 metawackery;
  • InfinityNaN是反映IEEE浮点前哨值的全局属性,并且直接来自该第三方规范。

所以我可以看到为什么不同的案例约定可能会在这里发挥作用:苹果和橘子。

在我看来,真正的问题是为什么最后两个不是Math.INFINITYMath.NAN

答案 1 :(得分:2)

我认为原因是:

  • 在ECMAScript中,类型以大写字母开头:

    UndefinedNullBooleanNumberStringSymbolObject

  • Undefined和Null是两种类型,只有一个值,与该类型具有相同的名称。但如果情况也一样,那就太混乱了,所以他们使用小写:

    undefinednull

  • NaN有这个外壳,因为它是IEEE 754-2008“Not-a-Number”值

    非数字⟶NaN

  • Infinity可以以大写字母开头,因为没有名为Infinity的类型。我想它也可以以小写字母开头,但也许他们想要类似于NaN的东西(?)