Есть функция продвинутого коррирования.
Я хочу ее понять.
Вопрос: какую роль играет this в строке return func.apply(this, args) ? Т.е. в контексте чего вызывается func? this по идее равно глобальному объекту в данном случае.
function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args)
} else {
return function(...args2) {
return curried.apply(this, args.concat(args2))
}
}
}
}
function sum(a, b, c) {
return a + b + c;
}
const currySum = curry(sum)
console.log(currySum(1)(2)(3))
console.log(currySum(1, 2)(3))
console.log(currySum(1)(2, 3))
console.log(currySum(1, 2, 3))