2016-04-09 5 views
0

私はfoo機能があります。問題はそのfooあるbar(foo, true);関数を渡す構文は何ですか?それを実行する別の関数に引数を渡しますか?

:ように私はbarの引数としてfooを渡したい

var bar = function(fn, condition) { 
    if (condition) { 
    fn(); 
    } 
} 

var foo = function(input) { 
    console.log(input) 
} 

そしてbar機能をパラメータを実行する必要があります。 bar(foo('param'), false);を使用すると、barが起動して条件を確認する前にfooが実行されます。

JavaScriptの構文では、より良い解決策がありますか?

私は次のように私のbar機能を変更することができることを知っているが、私はbar実装を変更する必要はありません:

var bar = function(fn, fnParam, condition) { 
    if (condition) { 
    fn(fnParam); 
    } 
} 

答えて

2

あなたはこのフォーマットを使用することができます:あなたはメタを必要としない限り、bar(function() { foo(param); },false)をあなたは新しいJavaScriptの機能、などArrow functionsで、あなたがすべてではないが、bar(()=>foo(param),false)と同じことを書くことができることをfunction(fn, paramArray, condition)...方法に

注意を使用する必要があり、その場合には名前のような関数foo、中の情報ブラウザはこの構文をサポートしています。

+0

素晴らしい!それは私が期待するほど読みにくいですが、十分です! – kimb

+1

' - >'は矢印関数ではなく、 '=>'は矢印関数です。 – Xufox

+0

あなたはそうです。タイプミスを修正しました。 –

関連する問題