你应该使用本地内部功能吗?

时间:2016-07-12 14:27:44

标签: javascript function

在编写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情况下则不那么重要。

是否有可能根据调用函数的频率或其他内容选择不同的方式?

1 个答案:

答案 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();
      };
    })();