JavaScript有大约44个保留关键字的标识符,但Infinity,NaN和undefined在JavaScript中被归类为非保留标识符。他们为什么称为标识符,为什么不保留它们?
答案 0 :(得分:6)
undefined
,NaN
和Infinity
实际上是全局对象的属性:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN
NaN是全局对象的属性。
NaN的初始值是Not-A-Number - 与Number.NaN的值相同。在现代浏览器中,NaN是一种不可配置的不可写属性。即使不是这种情况,也要避免覆盖它。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined
undefined是全局对象的属性,即它是全局范围内的变量。
undefined的初始值是未定义的原始值。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/infinity
Infinity是全局对象的属性,即它是全局范围内的变量。
Infinity的初始值是Number.POSITIVE_INFINITY。无穷大(正无穷大)值大于包括其自身在内的任何其他数字。此值在数学上表现得像无穷大;例如,任何正数乘以无穷大都是无穷大,任何除以无穷大的数字都是0.
15.1.1.1 NaN
NaN的值是NaN(见8.5)。此属性具有{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}。
15.1.1.2无限
无穷大的值是+∞(见8.5)。此属性具有{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}。
15.1.1.3 undefined
未定义的值未定义(参见8.1)。此属性具有{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}。
您可能会注意到[[Writable]]:false。在较新的浏览器中,为undefined分配新值无效:
> undefined = 'foo'
< "foo"
> undefined
< undefined