0

関数の引数が関数内のプライベート変数に変換されることをどこかで読んだことを覚えているので、これを試しました:

var node = function(nParent,nName,nContent){
    this.init = function(){
        alert(nName+" "+nParent+" "+nContent);
    }
};

var a = new node("A - parent","A - name","A - content");
var b = new node("B - parent","B - name","B - content");

a.init();
b.init();

これは、渡された引数が正しいことを警告するので、次のようなものの代わりに使用しても問題ありません。

var node = function(nParent,nName,nContent){
    var parent = nParent;
    var name = nName;
    var content = nContent;
    this.init = function(){
        alert(name+" "+parent+" "+content);
    }
};

引数をプライベート変数に割り当てる前に、何らかの形で追加の検証チェックを行いたい場合は、2 番目のバージョンを使用する必要があることはわかっています。どこにも行かない、これは合理的なことですか?ありがとう、

4

2 に答える 2

5

もちろん大丈夫です。これらの引数はインスタンス化された変数であり、設定した他の変数と大きな違いはありません。

ここで、名前付きパラメーターを使用argumentsず、代わりに使用した場合、コードの読みやすさとパフォーマンスの点で違いがあります (使用するとペナルティがありargumentsます)。

これらすべての唯一の欠点は、変数定義がすべて同じ場所にないことです。(この関数には、渡されたパラメーターを超えて、さらに変数の定義と割り当てがあると仮定します。)

于 2012-05-10T22:01:11.243 に答える
0

はい; それはまったく問題ありません。

于 2012-05-10T22:00:51.040 に答える