Javascript 为什么';无穷大'';空'';楠';和';未定义';有不一致的外壳吗?
在JavaScript中,语言结构“Infinity”、“null”、“NaN”和“undefined”的大小写不一致 它是历史性的,还是背后有什么意图?没有人知道-(Javascript 为什么';无穷大'';空'';楠';和';未定义';有不一致的外壳吗?,javascript,Javascript,在JavaScript中,语言结构“Infinity”、“null”、“NaN”和“undefined”的大小写不一致 它是历史性的,还是背后有什么意图?没有人知道-( (原答覆如下) 纯粹的猜测,但是 null和undefined是一个JavaScript关键字,反映了各种“非值”元语法。我知道的所有关键字都是小写的(c.f.true,false) undefined是一个全局属性,表示更多的metawackery Infinity和NaN是反映IEEE浮点sentinel值的全局属性,直
(原答覆如下) 纯粹的猜测,但是
和null
是一个JavaScript关键字,反映了各种“非值”元语法。我知道的所有关键字都是小写的(c.f.undefined
,true
)false
是一个全局属性,表示更多的metawackeryundefined
和Infinity
是反映IEEE浮点sentinel值的全局属性,直接来自该第三方规范NaN
在我看来,真正的问题是为什么最后两个不是
Math.INFINITY
和Math.NAN
我认为原因是:
- 在ECMAScript中,类型以大写开头: ,
- Undefined和Null是两种类型,它们只有一个值,该值与该类型具有相同的名称。但如果大小写相同,则太容易混淆,因此它们使用小写: ,
- 之所以使用此外壳,是因为它是IEEE 754-2008“非数字”值 不是一个数字⟶ <代码>NaN
- 可以以大写开头,因为没有称为Infinity的类型。我猜它也可以以小写开头,但可能他们想要类似于
(?)NaN
NaN
,没有特殊原因。也许小写的a
启发了无限
@LightnessRacesinOrbitundefined
只是全局对象上的一个不可修改的属性,我原以为我有了它。现在我我认为这只是一堆无法回答的废话:(我明白了,这更有意义。它可能会更好,但我想现在不会改变它,因为它基本上会破坏用JS编写的每一段代码。