Javascript中未保留的标识符

时间:2014-06-01 11:38:02

标签: javascript

JavaScript有大约44个保留关键字的标识符,但Infinity,NaN和undefined在JavaScript中被归类为非保留标识符。他们为什么称为标识符,为什么不保留它们?

1 个答案:

答案 0 :(得分:6)

undefinedNaNInfinity实际上是全局对象的属性

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.


请参阅ELS5 Section 15.1.1

  

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