我正在创建一个GM脚本,并且对如何使用尽可能少的全局污染进行设置提出了疑问。
我有1个主要功能可用,主要功能内有一堆私有功能。像这样:
function main(a, b, c) {
/* CODE */
f1(a);
/* CODE */
f2(a + c);
...
function f1(a) {
/* CODE */
}
function f2(a) {
/* CODE */
}
}
我想知道我应该使用var f1 = function(a) {...}
还是我的方式?
我还应该使用function main(a, b, c)
或var main = function(a, b, c)
我能想到的两者之间的唯一区别是,它是否会在运行任何代码之前进行解析,因此我可以使用我的私有函数编写代码。是否有任何名称冲突的可能性?
答案 0 :(得分:3)
我想知道我应该使用var f1 = function(a){...}还是我的方式?
你拥有它的方式function f1(){}
,因为那时函数的名称f1
对于调试代码很有用。
我也应该使用函数main(a,b,c)或var main = function(a,b,c)
如果您打算让其他脚本使用您的脚本,则应使用名称main
。由于我上面提到的原因,前一种方法更好。
也许你想要这样的东西:
(function(){
function f1() {} ;
function f2() {};
})()
答案 1 :(得分:1)
这两种方式之间无关紧要。任何名称冲突都可能出现。如果你var f1 = function(a) {}
,你需要在尝试调用它们之前在主函数的顶部定义它们。
var main = function(a, b, c) {
var f1 = function(a) {
/* CODE */
};
var f2 = function(a) {
/* CODE */
};
/* CODE */
f1(a);
/* CODE */
f2(a + c);
};