検討:
var success = function(data){
data = process_data(data);
console.log(data);
};
対。
var success = function(data){
var data = process_data(data);
console.log(data);
};
それぞれの長所/短所は何ですか?
検討:
var success = function(data){
data = process_data(data);
console.log(data);
};
対。
var success = function(data){
var data = process_data(data);
console.log(data);
};
それぞれの長所/短所は何ですか?
ECMAscript インタープリターに違いはありません。
正式なパラメータとローカル変数の両方が、アクティベーション オブジェクト(ES3)と呼ばれるレキシカル環境レコード(ES5+)にそれぞれ格納されます。
これらは、関数のように、コンテキストに属するデータを格納する実装レベルの特別なデータ コンテナーです。
実行時に違いはありませんが、ほとんどの linting ツールは 2 番目のコードについて文句を言います。JSHint は次のエラーを返します。
'data' は既に定義されています。
元のパラメーターが必要ない場合はdata
、変数を再宣言しても安全ですが、通常は必要ありません。
内部で変数を宣言したい場合は、おそらく他の名前で宣言する必要があります(引数とは似ていません)。
このように、オリジナルを再利用することができますargument
。
オリジナルを使用したくない場合は、argument
直接使用できます。ただし、内部で新しい変数を宣言すると、変数のスコープが制限されることに注意してください。