Hi ha alguna diferència entre "currying" i "clos" en JavaScript?


Resposta 1:

Crear un tancament no és més que accedir a una variable fora de l’àmbit d’una funció. Tingueu en compte que una funció dins d'una funció no és un tancament. Els tancaments s’utilitzen sempre quan cal accedir a les variables fora de l’àmbit de la funció.

Aquí teniu l’exemple de Tancaments

El curry es converteix una única funció de n arguments en n funcions amb un sol argument cadascuna. Així que podeu dir que currying és una manera de reduir les funcions de més d’un argument a les funcions d’un argument.

Aquí teniu l’exemple de la funció de curry de JavaScript

Les funcions de curry usen la propietat de Tancaments.


Resposta 2:

Les altres respostes són correctes, ja que el currying i el tancament són dos conceptes diferents. Tanmateix, estan relacionats en el sentit que ambdós es poden utilitzar per realitzar algunes de les mateixes coses.

Prenem per exemple el tancament següent per realitzar la mateixa funcionalitat que l’aplicació parcial

const makeAdder (x) {
retornar (y) => {
retornar x + y
}
}

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

Sovint es fa amb currar-se així (utilitzant ramda.js)

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

Doncs sí, tots dos són conceptes diferents, però com molts conceptes en la programació, hi ha moltes maneres diferents d’aconseguir la mateixa tasca. Tot i que els mètodes són molt similars, hi ha moltes coses diferents sota el capó.


Resposta 3:

Les altres respostes són correctes, ja que el currying i el tancament són dos conceptes diferents. Tanmateix, estan relacionats en el sentit que ambdós es poden utilitzar per realitzar algunes de les mateixes coses.

Prenem per exemple el tancament següent per realitzar la mateixa funcionalitat que l’aplicació parcial

const makeAdder (x) {
retornar (y) => {
retornar x + y
}
}

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

Sovint es fa amb currar-se així (utilitzant ramda.js)

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

Doncs sí, tots dos són conceptes diferents, però com molts conceptes en la programació, hi ha moltes maneres diferents d’aconseguir la mateixa tasca. Tot i que els mètodes són molt similars, hi ha moltes coses diferents sota el capó.


Resposta 4:

Les altres respostes són correctes, ja que el currying i el tancament són dos conceptes diferents. Tanmateix, estan relacionats en el sentit que ambdós es poden utilitzar per realitzar algunes de les mateixes coses.

Prenem per exemple el tancament següent per realitzar la mateixa funcionalitat que l’aplicació parcial

const makeAdder (x) {
retornar (y) => {
retornar x + y
}
}

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

Sovint es fa amb currar-se així (utilitzant ramda.js)

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

Doncs sí, tots dos són conceptes diferents, però com molts conceptes en la programació, hi ha moltes maneres diferents d’aconseguir la mateixa tasca. Tot i que els mètodes són molt similars, hi ha moltes coses diferents sota el capó.