JavaScript에서 'currying'과 'closure'사이에 차이점이 있습니까?


대답 1:

클로저를 생성하는 것은 함수 범위 밖의 변수에 액세스하는 것 이상입니다. 함수 내부의 함수는 클로저가 아닙니다. 함수 범위 밖의 변수에 액세스해야 할 때는 항상 클로저가 사용됩니다.

폐쇄의 예는 다음과 같습니다

카레는 n 개의 인수의 단일 함수를 각각 단일의 인수를 가진 n 개의 함수로 변환합니다. 따라서 Currying은 하나 이상의 인수의 함수를 하나의 인수의 함수로 줄이는 방법이라고 말할 수 있습니다.

다음은 JavaScript에서 Currying 함수의 예입니다.

커리 기능은 클로저 속성을 사용합니다.


대답 2:

다른 답변은 Currying과 Closures가 서로 다른 개념이라는 점에서 맞습니다. 그러나 둘 다 동일한 일을 수행하는 데 사용될 수 있다는 의미에서 관련이 있습니다.

예를 들어 다음 클로저를 사용하여 부분 응용 프로그램과 동일한 기능을 수행하십시오.

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

예, 둘은 서로 다른 개념이지만 프로그래밍의 많은 개념과 마찬가지로 동일한 작업을 수행하는 여러 가지 방법이 있습니다. 방법이 매우 유사하더라도 후드 아래에는 많은 차이가 있습니다.


대답 3:

다른 답변은 Currying과 Closures가 서로 다른 개념이라는 점에서 맞습니다. 그러나 둘 다 동일한 일을 수행하는 데 사용될 수 있다는 의미에서 관련이 있습니다.

예를 들어 다음 클로저를 사용하여 부분 응용 프로그램과 동일한 기능을 수행하십시오.

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

예, 둘은 서로 다른 개념이지만 프로그래밍의 많은 개념과 마찬가지로 동일한 작업을 수행하는 여러 가지 방법이 있습니다. 방법이 매우 유사하더라도 후드 아래에는 많은 차이가 있습니다.


대답 4:

다른 답변은 Currying과 Closures가 서로 다른 개념이라는 점에서 맞습니다. 그러나 둘 다 동일한 일을 수행하는 데 사용될 수 있다는 의미에서 관련이 있습니다.

예를 들어 다음 클로저를 사용하여 부분 응용 프로그램과 동일한 기능을 수행하십시오.

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

예, 둘은 서로 다른 개념이지만 프로그래밍의 많은 개념과 마찬가지로 동일한 작업을 수행하는 여러 가지 방법이 있습니다. 방법이 매우 유사하더라도 후드 아래에는 많은 차이가 있습니다.