193 votes

Deux jeux de parenthèses après l'appel de fonction

Je regardais comment filtres fonctionne en Angularjs et j'ai vu que nous devons envoyer 2 jeux de parenthèses.

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

Qu'est-ce que cela signifie et comment le gérer avec JavaScript ?

376voto

Paulpro Points 54844

Cela signifie que la première fonction ( $filter ) renvoie une autre fonction et cette fonction renvoyée est appelée immédiatement. Par exemple :

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

var addTwo = add(2);

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

26voto

Jack Points 88446

$filter('number') renvoie une fonction qui accepte deux arguments, le premier étant obligatoire (un nombre) et le second étant facultatif (la taille de la fraction).

Il est possible d'appeler immédiatement la fonction retournée :

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

Vous pouvez également conserver la fonction retournée pour une utilisation ultérieure :

var numberFilter = $filter('number');

numberFilter('123')

7voto

Bryan Oakley Points 63365

C'est la même chose que ça :

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

Le site $filter() renvoie un pointeur vers une autre fonction.

1voto

Ömer Ayhan Points 63

Avec ES6 ou des versions ultérieures, vous pouvez le faire de cette façon ;

const divideBoth = (x) => (y) => {
   return x / y;
};

L'une des raisons pour lesquelles ce type de fonction est utile, c'est lorsque vous avez un composant react.js qui a besoin d'une fonction de rappel au lieu de le faire en ligne (qui est ()=>renvoie la valeur ) vous pouvez le faire comme nous l'avons fait précédemment. Mais il n'est pas recommandé de l'utiliser dans les rappels d'événements car elle est exécutée lors du premier rendu, ce qui peut parfois causer des problèmes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X