如果a
未定义,则可行:
if(window.a) {}
虽然这会引发错误:
if(a)
有人可以解释原因吗?
答案 0 :(得分:10)
window.a
是window
的属性,而未定义。 a
是一个变量,它是未声明的。
要使用变量,首先应使用var
语句声明它。由于您未声明a
,解释程序会引发错误。为了使用它们,不需要显式声明对象属性。 Crockford在 The Good Parts 中写道:
如果您尝试从中提取值 一个对象,如果该对象没有 有一个有这个名字的成员,它 返回未定义的值。