0

いくつかのコードを実行する特定の方法の下に何が隠されているのか知りたいです。

頭の中で 3 つの方法があるのですが、どのような状況で、どのような理由でどの方法がよいのか、よくわかりません。ほとんどの場合、構文上の好みでメソッドを選択するだけCase 2ですが、各メソッドの長所と短所は何かとますます疑問に思っています。

ケース 1:

var response = Func();
//Handle response...

ケース 2:

Func(response){
  //Handle response...
};

ケース 3:

Func({
  case_x: function(opt){
    //Handle an example case...
  }
});

説明してくれてありがとう、私はそれについて非常に興味があります!

4

1 に答える 1

0

Func が既存の関数であると仮定します。

ケース 1 は、関数が値を返し、結果を次のように保存する場合です。

function times_ten(num){ return num*10; }
var ten = 10;
var hundred = times_ten(ten);

これで、変数を使用できるようになりhundredました。

ケース 2 は、値を返さない場合、または値を保存する必要がない場合です。

function write_times_ten(num){ num = num*10; document.write(num);  }
var ten = 10;
var hundred = write_times_ten(ten);

ケース 3 はもう少し複雑です。

そうする場合var something={a:function(){}}- このようなオブジェクトを作成すると、すべての関数が同じスコープに含まれるため、グローバル名前空間を汚染しません。これは、他の言語でクラスを作成するようなものです。jQuery は、私が考えることができる最大の例です。jQuery が行うすべてのことは、すべてオブジェクトによって処理されますjQuery(または、次のような関数を呼び出します)。jQuery.parseJSON(json_string)

そのような関数でオブジェクトを渡す場合は、次のように、Func()渡した関数で何かをするように求めています。

function do_something_times_ten(options){
    options.num = options.num*10;
    options.do_something(num);
}
var ten = 10;
do_something_times_ten({num:ten, 
                        do_something:function(num){
                                                     num = num*10;
                                                     document.write(num);  
                                                  }
                        }
);

これで、100 ではなく 1000 が出力されます。

于 2013-01-10T23:09:34.977 に答える