Показать сообщение отдельно
  #11 (permalink)  
Старый 02.04.2021, 14:32
Интересующийся
Отправить личное сообщение для worldsering Посмотреть профиль Найти все сообщения от worldsering
 
Регистрация: 01.04.2021
Сообщений: 11

Сообщение от Alexandroppolus Посмотреть сообщение
worldsering,
function number(num) {
    const inner = function(n) {
        const numberN = function(n1) {
            return inner(n * n1);
        }
        numberN.valueOf = function() { return n; };
        numberN.toString = function() { return String(n); };
        return numberN;
    }
    return inner(num);
}

const number5 = number(5);
const number10 = number5(2);
const number30 = number10(3);

const number15 = number5(3); // другая ветка умножения

alert([number5, number10, number30, number15, number10 + number15].join('\n'));
__________________________________________________ ______
Спасибо но в итоге,
const number5 = number(5);
const number10 = number5(2);
console.log(number10(3)) // Выведет функцию, а не 30
console.log(number10(3).valueOf()) // Выведет 30

Можно ли как то это сделать без дополнительного метода valueOf.

Последний раз редактировалось worldsering, 02.04.2021 в 14:43.
Ответить с цитированием