Czy function currying zawsze korzysta z domknięcia ?

Czy function currying zawsze korzysta z domknięcia ?
S5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
0

Czy function currying zawsze korzysta z domknięcia ? Mam 2 przykłady:

Przykład 1:

Kopiuj
function sum(a) {
    return (b) => {
        return (c) => {
            return a + b + c
        }
    }
}
console.log(sum(1)(2)(3)) // 6

Przykład 2:

Kopiuj
function sum(a) {
    return (b) => {
        return (c) => {
            return a + b + c
        }
    }
}

const sum1 = sum(1);
const sum2 = sum1(2);
const result = sum2(3);
console.log(result); // 6

Czy w przykładzie 1 też wykorzystywane jest domknięcie ? Czy tylko w przykładzie 2 wykorzystywane jest domknięcie ? Na pewno w 2 przykładzie jest wykorzystywane domknięcie, ale czy w przykładzie 1 również?

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8487
1

Spróbuj sobie odpowiedzieć najpierw, czym jest domknięcie. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

S5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
0
LukeJL napisał(a):

Spróbuj sobie odpowiedzieć najpierw, czym jest domknięcie. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

Wiem czym jest domknięcie. Domknięcie występuje wtedy, gdy funkcja korzysta ze swojego zakresu leksykalnego nawet jak jest wywoływana poza nim.

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8487
1

No to czym się te dwa przykłady różnią? A może są takie same?

S5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
0
LukeJL napisał(a):

No to czym się te dwa przykłady różnią? A może są takie same?

Wygląda mi na to, że w obu przykładach wykorzystywane jest domknięcie, ponieważ funkcję sa wywoływane poza ich zakresem leksykalnym w obydwu przypadkach. Mam rację ?

SL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1020
0

Przecież masz to samo. Domknięcie to cecha funkcji a nie wywołania. W przykładzie 1 masz to samo co w 2 tylko bez przypisywania funkcji pośrednich do zmiennych.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.