@WarriorKodeK

Можете пожалуйста обьяснить currying?

Привет. Можете пожалуйста обьяснить следующий кусок кода:
function sum(...args) {
    function inner(...more) {
        return sum(...args,...more);
    }
    let total = args.reduce((a, b) => a+b, 0); 
    inner.toString = () => total; 
    
    return inner;
}
console.log(sum(1)(2)(2)(3)) // 8
console.log(sum(1,2)(2,3)) //8


Зачем нам toString?
Можем ли мы обойтись без него?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 2
Aetae
@Aetae Куратор тега JavaScript
Тлен
Ну, во-первых, тут у вас написана ложь.
console.log не вызывает неявного приведения к строке, а потому в консоли мы увидим не 8, а то что там и есть на самом деле, т.е. function inner() {}
toString же неявно вызывается именно в случае использования объекта как строки.
Например: console.log(sum(1)(2)(2)(3) + 'px') // 8px.
В целом же я бы не рекомендовал так делать.
Ответ написан
Комментировать
Robur
@Robur
Знаю больше чем это необходимо
toString тут не имеет отношения к керингу совсем как и половина остального кода. Возьмите нормальный простой пример а не это чудо, если вы хотите разобраться что такое керинг.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы