【发布时间】:2013-01-11 07:06:07
【问题描述】:
假设我有:
var myNamespace = {
_prop1: 'hello',
_prop2: _prop1 + ' you!'
};
我刚刚发现这会在加载时在_prop2 上出错。
我不明白为什么这不起作用,我已经在我的代码中解决了这个问题,但我仍然想了解。
【问题讨论】:
-
请记住,您声明的内容直到最后的 }; 才真正存在;在上面的代码中,因为它没有被编译 - 所以你会得到的错误(_prop1 是未定义的)真的告诉你事情的全部真相!
-
在 javascript 中,变量作用域的工作方式与在 C 或其他语言中略有不同。当你请求一个变量时,它会检查它是否在当前范围内被声明为 var (在相同的括号之间),或者它是否是全局对象的变量(浏览器上下文中的窗口)。这里 _prop1 没有在相同的上下文中声明为 var,因此无法访问。
标签: javascript namespaces