在编写JavaScript时,通常认为哪些更好。 Foo,bar和baz特定于此功能,因此不会在其他功能的任何其他地方使用。
SimpleIRIMapper
或者
function() {
foo();
bar();
baz();
}
function foo() {
//lines of code
}
function bar() {
//lines of code
}
function baz() {
//lines of code
}
第一个的优点是它更有效,因为如果你更多地调用函数,一旦其他函数只需要创建一次。它也更容易阅读,因为主要的外部功能现在只有3行而且不会长得多。
我能想到的第二个唯一优势是它将这些函数保持为外部函数的私有,并且文件的其余部分无法访问,因为这些函数不会在其他任何地方使用。显然,通常在不需要的时候将事物公之于众是不好的,但在像这样的JavaScript情况下则不那么重要。
是否有可能根据调用函数的频率或其他内容选择不同的方式?
答案 0 :(得分:6)
如果您希望所有功能都可以自行公开,请单独声明
function foo() {} // Public, created once
function bar() {} // Public, created once
function baz() {} // Public, created once
var fooBarBaz = function() { // Public, created once
foo(); bar(); baz();
};
如果您希望辅助功能能够访问主功能的范围,每次调用主功能时都必须重新创建辅助功能,将辅助功能放在主要的一个
var fooBarBaz = function() { // Public, created once
function foo() {} // Private, created at each fooBarBaz call
function bar() {} // Private, created at each fooBarBaz call
function baz() {} // Private, created at each fooBarBaz call
foo(); bar(); baz();
};
如果您想保持辅助功能的私密性,并且每次调用主功能时都不想重新创建辅助功能,请使用IIFE
var fooBarBaz = (function() { // IIFE
function foo() {} // Private, created once
function bar() {} // Private, created once
function baz() {} // Private, created once
return function() { // Public, created once
foo(); bar(); baz();
};
})();