2011-08-04 14 views
0

最近、関数のスコープ内の変数に関数の引数を付けることができ、使用されるたびに引数を参照していないことがわかりました。JavaScriptの関数内から引数を参照する

この方法には何か利点はありますか?例えば

function populateResultCount(count){ 
    var count = count; 
    return $('.resultCounter').text(count);  
}; 

は簡単にそうように書き直すことができます:

function populateResultCount(count){ 
    return $('.resultCounter').text(count);  
}; 

そして、まだ正しく機能します。

+1

JavaScript関数は、引数の値とローカル変数の値を同じ場所( 'Variables'オブジェクト - 少なくともES3でどのように呼び戻されたか)に格納します。したがって、引数の値の取得vsローカル変数の値を取得する。 –

答えて

1

渡された引数を使用していない場合は、違いはありません。あなたの最初の例では、var count = countのために将来のメンテナーを混乱させる可能性があります。つまり、引数と同じ名前の変数を宣言しています。これはベストプラクティスではありません。

可能であれば、2番目のフォームを使用してください。その意図ははっきりしており、混乱の余地はありません。

3

2つの機能に違いはありません。よりシンプルなバージョンを使用してください。

1

どういうわけかデータを操作していない限り、これは役に立ちません。追加のアサインメントのない変数は、関数の外部ではまだアクセスできません。

1

他の答えはすべて正しいです:関数内で渡された引数を "再割り当て"する必要はありません。

引数を再割り当てを台無しだろうあなたは、あなたが任意の引数/デフォルト値を持っている場合

function xyz(optionalArgument) { 
    optionalArgument = optionalArgument || "no argument given"; 
    ... 
} 

である。しかし、その場合には、それを書く方が良いだろう、私は考えることができる唯一のこと、左辺がfalsy値である場合

function xyz(/* optionalArgument */) { 
    var optionalArgument = arguments[0] || "no argument given"; 
    ... 
} 

注意として||トリックは、あなたの右辺の値を与えること。私。オプションの引数は、(のような明示的null0などを渡す)falsy何かされた状態で[OK]をしている場合は、あなたも、引数を指定してそのような何かを行うことができますvar arg = typeof arguments[x] === 'undefined' ? defaultValue : arguments[x];

1
function Test (count) { 
    this.increment = function() { 
     count++; 
    } 

    this.getCount = function() { 
     return count; 
    } 
} 

var test = new Test(10); 


<button onclick="test.increment(); alert(test.getCount());">Increment</button> 

ような何かをする必要があると思います。だから私は彼らが同じだと思う。

関連する問題