为什么以下工作
var NameSpace = NameSpace || {};
NameSpace.Foo = 2;
但这不是吗?
var NameSpace = NameSpace || {};
var NameSpace.Foo = 2;
对于命名空间的变量减速的内部工作方式的任何了解都将受到重视。
答案 0 :(得分:1)
var foo = foo;
有效,因为ECMAscript会像
那样将这一行解耦var foo;
foo = foo;
引擎盖下。这个概念通常被称为吊装。
您的第二个代码段无法使用,因为我们正在分配对象属性。 var
关键字始终暗示,我们要在当前执行上下文中创建变量,符号
你当然可以做的是
var Foo = NameSpace.Foo = 2;
这会
Foo
Foo
对象NameSpace
2
答案 1 :(得分:1)
JavaScript没有名称空间。您的第一行代码是声明一个名为Namespace
的变量,其值为对象:
var NameSpace = NameSpace || {};
然后在对象上创建属性 Foo
,并为其指定值:
NameSpace.Foo = 2;
底线:变量和对象属性是不同的东西(除了其他差异,变量有范围,而属性没有)。 var
statement仅用于声明变量。
答案 2 :(得分:0)
var
保留用于声明新变量,而不是修改现有变量。
此外.
是变量名称的无效字符。