我注意到它NaN是作为全局变量(window.NaN)实现的,其值为NaN.
为什么会这样?那岂不是更有意义它是一个保留字,代表的值,如true,false和null?
编辑显然这是在规范,以及undefined和Infinity.WTF JavaScript?!
它不是以这种方式实现的,它是这样指定的:
15.1.1全局对象的值属性
15.1.1.1
NaN的值
NaN就是NaN(见8.5).此属性具有属性{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}.15.1.1.2
Infinity值为
Infinity+∞(见8.5).此属性具有属性{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}.15.1.1.3
undefined的值
undefined就是undefined(见8.1).此属性具有属性{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}.
(全局对象是浏览器上的窗口对象.)不执行此操作的实现违反了规范.:-)
至于为什么:规范似乎没有说明原因,所以除非有人能从Brendan Eich那里找到引用他的推理... :-)我只想推测使它们成为全局变量有点不那么限制:你可以拥有Infinity如果您不需要访问全局变量,则代码中的局部变量表示其他变量.如果它是一个保留字,你不能这样做.请注意,它也为麻烦敞开了大门,所以......
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |