Не корректно работает код с замыканием?

Задание: Написать функцию, принимающую 1 параметр. с тем, что передали первый раз и т. д. Все это с замыканиями, например: sum(3) = 3
sum(5) = 8
sum(20) = 28
Подскажите в чем у меня ошибка в коде, так как в консоль выводиться только sum(3) = 3.
function closures (number1 = 3) {
    console.log(`sum(3) = ${number1}`);
    return function (number2 = 5) {
        const result = number1 + number2
        console.log(`sum(5) = ${result}`);
        return function (number3 = 20) {
            const resultTwo = result + number3;
            console.log(`sum(20) = ${resultTwo}`)
        }
    }
}
closures();
  • Вопрос задан
  • 127 просмотров
Решения вопроса 2
otdameskapizm
@otdameskapizm
Помог ответ? Отметь решением...
У вас же первая функция возвращает функцию. Вы ее вызываете, она выводит в лог первый sum и все
Нужно продолжать вызовы, чтобы вызывалась каждая из возвращаемых функций
closures()()();
Ответ написан
chokoroko
@chokoroko Автор вопроса
function closures (number1) {
    //Выводим в консоль первое число
    console.log(`sum(${number1}) = ${number1}`);
    // Возвращаем функцию в которой задано второе число
    return function (number2) {
        //Создаем переменную, где прибавляем первое и второе число
        const result = number1 + number2
        //Выводим в консоль переменную, сумму двух первых чисел
        console.log(`sum(${number2}) = ${result}`);
        // Возвращаем функцию в которой задано третье число
        return function (number3) {
            //Создаем переменную, где прибавляем переменную result и третье число
            const resultTwo = result + number3;
            //Выводим в консоль переменную resultTwo
            console.log(`sum(${number3}) = ${resultTwo}`)
        }
    }
}
closures(3)(5)(20);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы