[英]Should you ever use local inner functions?
通常,在编写JavaScript时,哪种方法更好。 Foo,bar和baz特定于此功能,因此不会在其他功能的其他任何地方使用。
function() {
foo();
bar();
baz();
}
function foo() {
//lines of code
}
function bar() {
//lines of code
}
function baz() {
//lines of code
}
要么
function() {
function foo() {
//lines of code
}
foo();
function bar() {
//lines of code
}
bar();
function baz() {
//lines of code
}
baz();
}
第一种方法的优点是效率更高,因为如果您多次调用该函数,则一次创建其他函数只需一次。 它也更容易阅读,因为主要的外部函数现在只有3行,而且不再长。
我可以想到的第二个唯一优点是,这些功能使外部函数私有,并且文件的其余部分无法访问这些函数,这很好,因为这些函数不会在其他任何地方使用。 显然,通常情况下,当不需要将其公开时,将它们公开是不好的,但是在这样的JavaScript情况下,它的重要性不那么重要。
您是否可以根据函数被调用的频率或其他任何方式进行不同选择?
如果您希望所有功能可以自己公开使用,请分别声明它们
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(); }; })();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.