Existe-t-il une différence entre le «curry» et la «fermeture» en JavaScript?


Réponse 1:

La création d'une fermeture n'est rien d'autre que l'accès à une variable en dehors de la portée d'une fonction. Veuillez noter qu'une fonction à l'intérieur d'une fonction n'est pas une fermeture. Les fermetures sont toujours utilisées lorsque vous avez besoin d'accéder aux variables en dehors de la portée de la fonction.

Voici l'exemple des fermetures

Currying consiste à convertir une seule fonction de n arguments en n fonctions avec un seul argument chacune. Vous pouvez donc dire que Currying est un moyen de réduire les fonctions de plusieurs arguments en fonctions d'un seul argument.

Voici l'exemple de la fonction Currying en JavaScript

Les fonctions de curry utilisent la propriété de Closures.


Réponse 2:

Les autres réponses sont correctes, dans la mesure où le curry et la fermeture sont deux concepts différents. Cependant, ils sont liés dans le sens où les deux peuvent être utilisés pour accomplir certaines des mêmes choses.

Prenez par exemple la fermeture suivante pour effectuer la même fonctionnalité qu'une application partielle

const makeAdder (x) {
return (y) => {
retourner x + y
}
}

const add9 = makeAdder (9)
console.log (add9 (2)) // 11

Ceci est souvent accompli avec le curry comme ça (en utilisant ramda.js)

const makeAdder = (x, y) => {
 retourner x + y
}
const curriedMakeAdder = R.curry (makeAdder)
const add9 = curriedMakeAdder (9)
console.log (add9 (2)) // 11

Alors oui, les deux sont des concepts différents, mais comme de nombreux concepts en programmation, il existe de nombreuses façons différentes d'accomplir la même tâche. Même si les méthodes sont assez similaires, il se passe beaucoup de choses sous le capot.


Réponse 3:

Les autres réponses sont correctes, dans la mesure où le curry et la fermeture sont deux concepts différents. Cependant, ils sont liés dans le sens où les deux peuvent être utilisés pour accomplir certaines des mêmes choses.

Prenez par exemple la fermeture suivante pour effectuer la même fonctionnalité qu'une application partielle

const makeAdder (x) {
return (y) => {
retourner x + y
}
}

const add9 = makeAdder (9)
console.log (add9 (2)) // 11

Ceci est souvent accompli avec le curry comme ça (en utilisant ramda.js)

const makeAdder = (x, y) => {
 retourner x + y
}
const curriedMakeAdder = R.curry (makeAdder)
const add9 = curriedMakeAdder (9)
console.log (add9 (2)) // 11

Alors oui, les deux sont des concepts différents, mais comme de nombreux concepts en programmation, il existe de nombreuses façons différentes d'accomplir la même tâche. Même si les méthodes sont assez similaires, il se passe beaucoup de choses sous le capot.


Réponse 4:

Les autres réponses sont correctes, dans la mesure où le curry et la fermeture sont deux concepts différents. Cependant, ils sont liés dans le sens où les deux peuvent être utilisés pour accomplir certaines des mêmes choses.

Prenez par exemple la fermeture suivante pour effectuer la même fonctionnalité qu'une application partielle

const makeAdder (x) {
return (y) => {
retourner x + y
}
}

const add9 = makeAdder (9)
console.log (add9 (2)) // 11

Ceci est souvent accompli avec le curry comme ça (en utilisant ramda.js)

const makeAdder = (x, y) => {
 retourner x + y
}
const curriedMakeAdder = R.curry (makeAdder)
const add9 = curriedMakeAdder (9)
console.log (add9 (2)) // 11

Alors oui, les deux sont des concepts différents, mais comme de nombreux concepts en programmation, il existe de nombreuses façons différentes d'accomplir la même tâche. Même si les méthodes sont assez similaires, il se passe beaucoup de choses sous le capot.