Je v JavaScriptu nějaký rozdíl mezi „kari“ a „uzavřením“?


Odpověď 1:

Vytvoření uzavření není nic jiného než přístup k proměnné mimo rozsah funkce. Upozorňujeme, že funkce uvnitř funkce není uzávěrka. Uzávěry se vždy používají, když je třeba přistupovat k proměnným mimo rozsah funkce.

Zde je příklad uzavření

Currying převádí jednu funkci n argumentů na n funkce, každý s jediným argumentem. Takže můžete říci, že Currying je způsob, jak omezit funkce více než jednoho argumentu na funkce jednoho argumentu.

Zde je příklad funkce Currying v JavaScriptu

Funkce currying používá vlastnost Closures.


Odpověď 2:

Ostatní odpovědi jsou správné, protože Currying a Closures jsou dva různé pojmy. Jsou však příbuzní v tom smyslu, že oba mohou být použity k provedení některých stejných věcí.

Vezměte například následující uzavření, abyste provedli stejnou funkci jako částečná aplikace

const makeAdder (x) {
návrat (y) => {
návrat x + y
}
}

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

Toho je často dosaženo pomocí kari (pomocí ramda.js)

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

Takže ano, dva jsou různé koncepty, ale stejně jako mnoho konceptů v programování, existuje mnoho různých způsobů, jak splnit stejný úkol. I když jsou metody docela podobné, pod kapotou se děje hodně odlišných věcí.


Odpověď 3:

Ostatní odpovědi jsou správné, protože Currying a Closures jsou dva různé pojmy. Jsou však příbuzní v tom smyslu, že oba mohou být použity k provedení některých stejných věcí.

Vezměte například následující uzavření, abyste provedli stejnou funkci jako částečná aplikace

const makeAdder (x) {
návrat (y) => {
návrat x + y
}
}

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

Toho je často dosaženo pomocí kari (pomocí ramda.js)

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

Takže ano, dva jsou různé koncepty, ale stejně jako mnoho konceptů v programování, existuje mnoho různých způsobů, jak splnit stejný úkol. I když jsou metody docela podobné, pod kapotou se děje hodně odlišných věcí.


Odpověď 4:

Ostatní odpovědi jsou správné, protože Currying a Closures jsou dva různé pojmy. Jsou však příbuzní v tom smyslu, že oba mohou být použity k provedení některých stejných věcí.

Vezměte například následující uzavření, abyste provedli stejnou funkci jako částečná aplikace

const makeAdder (x) {
návrat (y) => {
návrat x + y
}
}

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

Toho je často dosaženo pomocí kari (pomocí ramda.js)

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

Takže ano, dva jsou různé koncepty, ale stejně jako mnoho konceptů v programování, existuje mnoho různých způsobů, jak splnit stejný úkol. I když jsou metody docela podobné, pod kapotou se děje hodně odlišných věcí.