JavaScriptで「カレー」と「クロージャ」に違いはありますか?


答え 1:

クロージャーを作成することは、関数のスコープ外の変数にアクセスすること以外の何物でもありません。関数内の関数はクロージャーではないことに注意してください。関数スコープ外の変数にアクセスする必要がある場合、クロージャーは常に使用されます。

これがクロージャーの例です

カリー化とは、n個の引数を持つ1つの関数を、それぞれ1つの引数を持つn個の関数に変換することです。したがって、カリー化は、複数の引数の関数を1つの引数の関数に還元する方法であると言えます。

JavaScriptのCurrying関数の例です

カリー化関数は、クロージャーのプロパティを使用します。


答え 2:

カリー化とクロージャーは2つの異なる概念であるため、他の答えは正しいです。ただし、これらは、同じことのいくつかを達成するために両方を使用できるという意味で関連しています。

部分的なアプリケーションと同じ機能を実行するには、次のクロージャーを例に取ります

const makeAdder(x){
return(y)=> {
x + yを返します
}
}

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

これは多くの場合、そのようにカリー化することで達成されます(ramda.jsを使用)

const makeAdder =(x、y)=> {
 x + yを返します
}
const curriedMakeAdder = R.curry(makeAdder)
const add9 = curriedMakeAdder(9)
console.log(add9(2))// 11

はい、2つは異なる概念ですが、プログラミングの多くの概念と同様に、同じタスクを達成するためのさまざまな方法があります。方法が非常に類似していても、内部ではさまざまなことが行われています。


答え 3:

カリー化とクロージャーは2つの異なる概念であるため、他の答えは正しいです。ただし、これらは、同じことのいくつかを達成するために両方を使用できるという意味で関連しています。

部分的なアプリケーションと同じ機能を実行するには、次のクロージャーを例に取ります

const makeAdder(x){
return(y)=> {
x + yを返します
}
}

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

これは多くの場合、そのようにカリー化することで達成されます(ramda.jsを使用)

const makeAdder =(x、y)=> {
 x + yを返します
}
const curriedMakeAdder = R.curry(makeAdder)
const add9 = curriedMakeAdder(9)
console.log(add9(2))// 11

はい、2つは異なる概念ですが、プログラミングの多くの概念と同様に、同じタスクを達成するためのさまざまな方法があります。方法が非常に類似していても、内部ではさまざまなことが行われています。


答え 4:

カリー化とクロージャーは2つの異なる概念であるため、他の答えは正しいです。ただし、これらは、同じことのいくつかを達成するために両方を使用できるという意味で関連しています。

部分的なアプリケーションと同じ機能を実行するには、次のクロージャーを例に取ります

const makeAdder(x){
return(y)=> {
x + yを返します
}
}

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

これは多くの場合、そのようにカリー化することで達成されます(ramda.jsを使用)

const makeAdder =(x、y)=> {
 x + yを返します
}
const curriedMakeAdder = R.curry(makeAdder)
const add9 = curriedMakeAdder(9)
console.log(add9(2))// 11

はい、2つは異なる概念ですが、プログラミングの多くの概念と同様に、同じタスクを達成するためのさまざまな方法があります。方法が非常に類似していても、内部ではさまざまなことが行われています。