2016-07-12 11 views
2

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行しかなく、あまり長くないので、読みやすくなります。

私が第2の考え方として考えることができる唯一の利点は、これらの機能を外部機能に専用にし、残りのファイルにアクセスできないことです。これらの機能は他の場所では使用されないためです。明らかに、通常、物事を公開する必要がないときに公開するのは悪いですが、JavaScriptのような状況ではそれほど重要ではありません。

関数が呼び出された頻度や他の方法によって異なる選択が可能ですか?

答えて

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(); 
    }; 
    
  • あなたが、主な機能の範囲にアクセスできるようにする補助機能が必要な場合トレードのこと、彼らはあなたがワン場合は、メイン1

    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(); 
    }; 
    
  • 内の補助機能を置く、あなたは、main関数を呼び出すたびに再作成する必要がありますトンプライベート補助機能を維持するために、あなたは彼らにあなたがメインの関数を呼び出すたびに再作成する必要はありません、あなたは `var`でのみfooBarBaz機能を宣言しないのはなぜ生命維持

    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(); 
        }; 
    })(); 
    
+0

を使うのか?このようにしなければならないIIFEの例と平行しているのでしょうか? – nnnnnn

+1

あなたは本当に私の質問に答えていない、ちょうどそれを繰り返した。私はすでに長所と短所を述べましたが、私はこれらのカテゴリの1つに該当する上記の一般的な状況をもっと求めていますか? – user2802557

+0

'fooBarBaz'が一度呼び出された場合、中間のものは価値がありますので、使用しないでください。 IIFEが最も推奨され、OPが使用すべきものです。 – 4castle

関連する問題