javascript - 为什么在声明子 namespace 时不能使用 var?

标签 javascript namespaces module-pattern

为什么下面的工作有效

var NameSpace = NameSpace || {}; 
NameSpace.Foo = 2;

但这不是吗?

var NameSpace = NameSpace || {}; 
var NameSpace.Foo = 2;

如能深入了解变量减速在命名空间方面的内部工作原理,我们将不胜感激。

最佳答案

JavaScript 没有 namespace 。您的第一行代码声明了一个名称为 Namespace 且值为对象的变量:

var NameSpace = NameSpace || {};

然后您在该对象上创建一个属性 Foo,并为其赋值:

NameSpace.Foo = 2;

底线:变量和对象属性是不同的东西(除其他区别外,变量有范围,而属性没有)。 var statement仅用于声明变量。

关于javascript - 为什么在声明子 namespace 时不能使用 var?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16304429/

相关文章:

javascript - 帮助设计一个公开我初始化的属性的 JavaScript 类

javascript - 创建揭示模块模式的实例

c# - 使用这种类型的外部库后出现错误 "Type does not exist in the namespace"

php - 为什么 php simplexml 允许在这些示例之一中使用 addChild 而在另一个示例中则不允许?

javascript - 如何基于 UTC RFC 3339 时间戳创建本地化的 JavaScript 日期

javascript - Go 无法处理基准测试(而 Python 和 Node.js 可以)?

python - 在python中导入全局命名空间

javascript - 模块模式内的 Google 图表

javascript - 如何使用PyV8和httplib解释javascript

javascript - 组合框在 Ext Grid 面板中标记为脏,没有任何更改