看来,未定义是/窗口的性质全球:未定义窗口/全局属性?
我一直认为未定义是,像空,在JavaScript中潮头值。
但上面的代码(在Chrome中测试)让我感到困惑。
一些可以解释为什么
undefined in window
evalute为真,而
null in window
值为false
看来,未定义是/窗口的性质全球:未定义窗口/全局属性?
我一直认为未定义是,像空,在JavaScript中潮头值。
但上面的代码(在Chrome中测试)让我感到困惑。
一些可以解释为什么
undefined in window
evalute为真,而
null in window
值为false
不仅undefined
,也Infinity
和NaN
是global object
的值,在这种情况下,window
(截止ES5.1 specification)。
您无法将值指定给undefined
的原因是,该属性的定义是writable
attribute设置为false
。
null
是primitive value
(如5
)的typeNull
(如Number
为5
),而不是window
的性质。
看看annotated ES5 specification了解更多背景,它的可读性很强!
实际上,在ES5之前,你可以指定'undefined'。你不应该,但你可以。事实上,jQuery中的代码试图获得真正的未定义的情况,以防将任何人分配给未定义的东西。 – slebetman 2013-04-22 08:34:58
有一个内置的'undefined'值,'恰好'用作'window.undefined'属性的值(它被指定为'undefined',但在某些实现中它可以被重新分配)。非常可靠的方法来获得未定义的值包括'void 0','(function(){}())'和'var undef;'。我推荐'var undef = void 0;'在模块模式范围内使用。 – Keen 2013-04-22 16:47:39
相关:/ questions/776950/javascript-undefined-undefined – 2013-04-22 07:44:59