流星文档(见命名空间 )说:
当你声明一个顶级变量,你有一个选择。 你可以把这些变量文件范围或包范围。
// File Scope. This variable will be visible only inside this
// one file. Other files in this app or package won't see it.
var alicePerson = {name: "alice"};
// Package Scope. This variable is visible to every file inside
// of this package or app. The difference is that 'var' is
// omitted.
bobPerson = {name: "bob"};
这是非常好的。 如果一个包有一个以上的源代码文件,这些文件可以共享变量,但保持世界其他地区的。 不过,我开始怀疑。
到底如何?他们实现包范围?
起初我还以为他们用立即调用函数表达式实现它。 你知道这样的结构:
(function() { /* your code here */ })();
所以,我试图模仿在控制台此行为。 我这样定义一个变量: x = "Package scope candidate";
。
我在控制台中输入:
(function() {
x = "Package scope candidate";
})();
console.log(x);
我也得到"Package scope candidate"
在控制台中。 如何令人失望。 变量x
降落在全球范围内。 在Window
对象。 绝对不是我想要的东西。 和流星? 他们管理它在某种程度上。 他们可能用一些神奇的,我不明白。