【发布时间】:2016-10-13 16:00:01
【问题描述】:
我喜欢让我的 javascript 文件尽可能小并使用architectural pattern。这通常意味着将我的 js 文件拆分为服务、控制器、模型、视图等。
Meteor 会自动加载所有的 js 文件。但是,在任何 js 文件中定义的每个变量都作为该文件的局部变量处理。为了能够访问它们,我必须像这样定义它们:
//global
my_global_function = function(){
}
//not global
var my_global_function = function(){
}
//not global
function my_global_function(){
}
在没有关键字var 或function 的情况下定义变量/函数不是好的做法。有哪些可能的替代方案?
【问题讨论】:
-
正如您所说,不包含“var”关键字是您声明变量应具有全局可见性的方式。这只是定义的语法,您似乎对此并不感到困惑。那么你认为什么是不好的做法?拥有全局变量,还是简单地以这种方式声明它们?当然限制你对全局变量的使用是一个非常好的主意,但这与语法无关。您可以考虑将代码拆分为必须显式声明外部可见变量的包。这是一种极好的做法,但我仍然不建议仅仅以不同的方式声明全局变量。
-
没错,你不应该在没有
var的情况下声明它们,因为这会造成混乱,最好是window.variable或globalvariable` 服务器端。我不相信还有另一种方法可以在没有一些 require() 函数或类似的东西的情况下在文件之间共享变量 -
如果这是为了符合
strict mode,请考虑使用here 的方法。
标签: javascript meteor