1

Javascript 関数の次の 2 つのバージョンの間で何が優れているかを見つけるのに苦労しています

var FirstName = function(){
    var value = 0;

    this.getValue = function(){
        return value;
    }
}

var FirstName = function(){
    var value = 0;

    return {
        getValue: function(){
            return value;
        }
    }
}

後者がクロージャーを形成することは理解していますが、使用の観点から、2番目のスタイルのクロージャーが最初のスタイルよりもどのような利点を提供するかはわかりませんか?

編集: Felix からのコメントに基づいて、両方の関数がクロージャを形成します。したがって、意味的には、これら 2 つの関数に違いはありません (私が理解している限り)。では、どちらが好ましい方法ですか?ガイドラインはありますか?

4

2 に答える 2

0

この場合、2 番目の方法は少し冗長に思えます。しかし、2 番目の方法を使用する方が有益な場合があると確信しています。私は個人的に最初のものを使います。それは、通常、よりクリーンで混乱の少ないコードになるからです。それは単なる好みの問題です。好きな方と、作業中の残りのコードと一致する方のどちらでもかまいません。一貫性が最も重要です。

于 2012-07-31T21:07:17.200 に答える
0

最初のメソッドは何も返さず、関数をグローバル変数として作成するだけですが、2 番目のメソッドは内部関数をオブジェクトのメンバーとして返します。

内部関数を返すことにより、コード全体で関数のさまざまな状態を設定および維持できますが、最初の状態では、実行するたびにメソッドが上書きされます。後者の方が柔軟なようです..

私が作成したこのデモをいじることができます。

于 2012-07-31T21:07:24.280 に答える