如果
a
未定义,那么这个代码可以正常工作:if(window.a) {}
虽然这会抛出一个错误:
if(a)
有人能解释一下为什么吗?
a
未定义,那么这个代码可以正常工作:if(window.a) {}
虽然这会抛出一个错误:
if(a)
有人能解释一下为什么吗?
window.a
是 window
的一个属性,它的值是 未定义 的。 a
是一个变量,它是 未声明 的。
要使用一个变量,应该先使用 var
语句声明它。由于你没有声明 a
,解释器会抛出一个错误。对象的属性不需要显式地声明才能使用它们。 Crockford 在 The Good Parts 中写道:
如果你试图从一个对象中提取一个值,并且这个对象没有该名称的成员,它会返回 未定义 值。
window
对象的属性。这是JavaScript的一个独立问题。如果在非浏览器环境下运行window.a = 2; a
,比如Rhino,你仍然会得到引用错误。 - viam0Zahthis.a = 2; a
,它将在任何环境中都能正常工作。仍然存在一个全局对象,只是它并不总是被称为window
。 - Matthew Crumley