2013-08-14 11 views
97

私はAngularjsでfiltersがどのように機能するのかを見ていましたが、2セットの括弧を送信する必要があることがわかりました。関数呼び出し後の2組の括弧

$filter('number')(number[, fractionSize]) 

JavaScriptを使用するとどういう意味がありますか?

+4

私もを読むために/この構文は混乱ぎこちない見つけます。しかし、より簡単な構文を使用してAngularJSフィルタにアクセスすることができます:http://stackoverflow.com/a/14303362/1418796 –

+0

私はangularjsを例として取りました。自分で関数を作成すると、これを処理する方法を知りたかったのです。 – L105

答えて

218

これは、最初の関数($filter)が別の関数を返し、その関数が直ちに呼び出されることを意味します。例えば:

function add(x){ 
    return function(y){ 
    return x + y; 
    }; 
} 

var addTwo = add(2); 

addTwo(4) === 6; // true 
add(3)(4) === 7; // true 
+2

ありがとう、今私は理解する。 – L105

+1

あなたは@ L105ようこそ。 – Paulpro

+1

驚くばかりの答え!一度理解すれば分かりますが、構文に即してすぐには分かりません。 – HartleySan

5

それはこれと同じである。

var func = $filter('number'); 
func(number[, fractionSize]); 

$filter()関数が他の関数へのポインタを返します。

+2

関数は予約済みキーワードです – eyelidlessness

+0

@eyelidlessness:それをキャッチするために感謝します。 –

13

$filter('number')は、2つの引数を受け付ける関数を返します。最初の引数は必須であり、もう1つはオプションです(小数点以下の桁数)。

それはすぐに返された関数を呼び出すことが可能です。また

$filter('number')('123') 

を、あなたは、将来の使用のために返された機能を維持することがあります。個人的に

var numberFilter = $filter('number'); 

numberFilter('123') 
+5

誰でもこの答えをdvdすることにしたので、その理由は私には分かりません。この場合、.catchを入れてエラーが発生するのは –

+0

ですか? – stackdave

+0

@stackdaveあなたは何を解決しようとしていますか? –

関連する問題