Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';无穷大'';空'';楠';和';未定义';有不一致的外壳吗?_Javascript - Fatal编程技术网

Javascript 为什么';无穷大'';空'';楠';和';未定义';有不一致的外壳吗?

Javascript 为什么';无穷大'';空'';楠';和';未定义';有不一致的外壳吗?,javascript,Javascript,在JavaScript中,语言结构“Infinity”、“null”、“NaN”和“undefined”的大小写不一致 它是历史性的,还是背后有什么意图?没有人知道-( (原答覆如下) 纯粹的猜测,但是 null和undefined是一个JavaScript关键字,反映了各种“非值”元语法。我知道的所有关键字都是小写的(c.f.true,false) undefined是一个全局属性,表示更多的metawackery Infinity和NaN是反映IEEE浮点sentinel值的全局属性,直

在JavaScript中,语言结构“Infinity”、“null”、“NaN”和“undefined”的大小写不一致

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

没有人知道-(


(原答覆如下)

纯粹的猜测,但是

  • null
    undefined
    是一个JavaScript关键字,反映了各种“非值”元语法。我知道的所有关键字都是小写的(c.f.
    true
    false
  • undefined
    是一个全局属性,表示更多的metawackery
  • Infinity
    NaN
    是反映IEEE浮点sentinel值的全局属性,直接来自该第三方规范
所以我可以理解为什么不同的案例惯例可能在这里起作用:苹果和橘子


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

我认为原因是:

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

    ,

  • Undefined和Null是两种类型,它们只有一个值,该值与该类型具有相同的名称。但如果大小写相同,则太容易混淆,因此它们使用小写:

    ,

  • 之所以使用此外壳,是因为它是IEEE 754-2008“非数字”值

    不是一个数字⟶ <代码>NaN

  • 可以以大写开头,因为没有称为Infinity的类型。我猜它也可以以小写开头,但可能他们想要类似于
    NaN
    (?)


叹气。我希望undefined真的是一个关键词。@TamasHegedus:Aw,balls,不是吗?在Java中,它是
NaN
,没有特殊原因。也许小写的
a
启发了
无限
@LightnessRacesinOrbit
undefined
只是全局对象上的一个不可修改的属性,我原以为我有了它。现在我我认为这只是一堆无法回答的废话:(我明白了,这更有意义。它可能会更好,但我想现在不会改变它,因为它基本上会破坏用JS编写的每一段代码。