Dois conjuntos de parênteses após a chamada de function

Eu estava olhando como os filtros funcionam no Angularjs e vi que precisamos enviar dois conjuntos de parênteses.

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

O que significa e como lidamos com JavaScript?

Isso significa que a primeira function ( $filter ) retorna outra function e, em seguida, essa function retornada é chamada imediatamente. Por exemplo:

 function add(x){ return function(y){ return x + y; }; } var addTwo = add(2); addTwo(4) === 6; // true add(3)(4) === 7; // true 

$filter('number') retorna uma function que aceita dois argumentos, sendo o primeiro requerido (um número) e o segundo sendo opcional (o tamanho da fração).

É possível chamar imediatamente a function retornada:

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

Como alternativa, você pode manter a function retornada para uso futuro:

 var numberFilter = $filter('number'); numberFilter('123') 

É o mesmo que isso:

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

A function $filter() retorna um ponteiro para outra function.