3

名前付き関数を呼び出さずにパラメーターを指定して渡すにはどうすればよいですか。

現在、私が持っている唯一の解決策はハックのようですが、名前付き関数を呼び出す名前のない関数を渡すことです。

callback(function(){foo(params);})

これを行うより良い方法はありますか?

4

4 に答える 4

3

別の無名関数で呼び出しをラップするコードはまったく問題なく、Javascript で広く使用されているパターンです。

匿名関数を削除したい場合は、代わりにbind()メソッドで関数への参照を使用できます。これを試して:

callback(foo.bind(this, params));

bind() ドキュメント

于 2015-07-03T15:35:09.147 に答える
3

いいえ、それを行うにはいくつかの方法がありますが、あなたが持っている方法が最も人気があります. 私はそれがハッキーに感じるのを知っていますが、それはそうです。

あなたもできる

callback(foo.bind(this, params));
于 2015-07-03T15:34:01.530 に答える
0

関数を渡してJavascript apply/call関数を使用することもできます

callback(myFunc);

ここで、コールバックは次のように定義されます。

function callback(func, params) {
    func.apply(null, params);
}

詳細については、MDN の Apply メソッドのドキュメントを参照してください

于 2015-07-03T15:35:48.507 に答える