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 が出力されます。