2016-10-13 3 views
0

私は矢印関数を使用して、他の関数にパラメータを渡しています。それは一種の、次のようになりますjs arrow関数をパラメータとして使用する

someFunction(parameter1,() => { 
    return model.associatedGroups.filter(group => { 
    return group.isAssociated === true; 
    }) 
}, parameter3) 

が、私はそれをデバッグよ、私は私が代わりにフィルター配列で呼んでいる方法で機能を受けています。フィルタリングされた配列を取得するには、どうすればいいですか?

+0

矢印機能が関数です。 'someFunction'がコールバックを呼び出すまで、フィルターされた配列を取得しません。 – Barmar

+0

なぜそれを関数にしたくない場合は、矢印関数を使用していますか? – Barmar

+0

でも、矢印関数を使用して値を返すことができたことがありますが、それは実際に意味をなさないでしょうか?これらの場合、価値を得るためにあなたの関数をIIFEにしますか? – Joe

答えて

1

あなたは関数への参照を渡すだけです。

は、引数としてその結果を渡すための場所で関数を呼び出します。

someFunction(
    parameter1, 
    (() => model.associatedGroups.filter(group => group.isAssociated === true))(), 
    parameter3 
) 

それとも、フィルタの結果を渡す:

someFunction(
    parameter1, 
    model.associatedGroups.filter(group => group.isAssociated === true), 
    parameter3 
) 

それとも、すでにあるとして関数を渡すと、コールその結果を得るためにsomeFunctionの範囲内にある。

+1

このような議論にIIFEを使用することには意味がありません。引数の中で 'model.associatedGroups.filter()'を呼び出すだけです。 – Barmar

+0

@Barmar u'r絶対に正しい...どうしたのですか? – Joe

0

これは、配列ではなく関数を渡すためです。この関数の結果を望むなら、それを呼び出さなければなりません。

さらに、矢印機能を使用すると、1行しか表示されていない場合でも `returnを入れる必要はありません。

これを試してみてください:

someFunction(parameter1, (() => model.associatedGroups.filter(group => group.isAssociated === true))(), parameter3) 

編集:これはenoughtです:)

someFunction(parameter1, model.associatedGroups.filter(group => group.isAssociated === true), parameter3) 
関連する問題