2

検討:

var success = function(data){
    data = process_data(data);
    console.log(data);
};

対。

var success = function(data){
    var data = process_data(data);
    console.log(data);
};

それぞれの長所/短所は何ですか?

4

5 に答える 5

3

ECMAscript インタープリターに違いはありません。

正式なパラメータローカル変数の両方が、アクティベーション オブジェクト(ES3)と呼ばれるレキシカル環境レコード(ES5+)にそれぞれ格納されます。

これらは、関数のように、コンテキストに属するデータを格納する実装レベルの特別なデータ コンテナーです。

于 2013-07-26T11:16:30.660 に答える
1

実行時に違いはありませんが、ほとんどの linting ツールは 2 番目のコードについて文句を言います。JSHint は次のエラーを返します。

'data' は既に定義されています。

元のパラメーターが必要ない場合はdata、変数を再宣言しても安全ですが、通常は必要ありません。

于 2013-07-26T11:18:52.817 に答える
0

内部で変数を宣言したい場合は、おそらく他の名前で宣言する必要があります(引数とは似ていません)。

このように、オリジナルを再利用することができますargument

オリジナルを使用したくない場合は、argument直接使用できます。ただし、内部で新しい変数を宣言すると、変数のスコープが制限されることに注意してください。

于 2013-07-26T11:18:56.290 に答える