Currying makes it implicit, but it's the same thing.
const one = curriedSum(1)
one(2)
is the same as const one = sum.bind(null, 1)
one(2)
with the exception that the latter is explicit and not as slow as `curriedSum`.Both `sum` and `curriedSum` can be used the same way:
curriedSum(1)(2)
sum.bind(null, 1)(2)
or just: curriedSum(1, 2)
sum(1, 2)
One of the advantages is that non-curried functions make the return value explicit. You can't implement `sum(...addends)` with currying because curried functions have a fixed number of parameters. Once past that, a call will not return a function anymore. sum.bind(null, 1).bind(null, 2).bind(null, 3).bind(null, 4) // Still not called
curriedSum(1)(2)(3)(4) // Maybe it works, maybe undefined is not a function