Есть вот такой код. Мне надо переписать его так чтобы он например при вызове console.log(add(1)(2)(3))
вернул число 6 и без пустых скобок в конце
const add = (a) => {
let sum = a;
const func = b => {
if (b) {
sum += b;
return func;
} else {
return sum;
}
};
return func;
};
Ситуация такая, что функция в любом случае должна возвращаться. Но как понять, что это последний вызов в цепочке? Никак!
Тут фишка в другом: console.log
неявно вызывает метод toString
, который можно перезаписать
Есть метод valueOf
, который используется, когда значение приводится к числу
const add = (a = 0) => {
let sum = a;
const func = (b = 0) => {
sum += b;
return func;
};
func.toString = () => sum // Переопределяем метод toString
func.valueOf = () => sum // Перезаписываем valueOf
return func;
};
console.log(add(1)(1)(1)(7));
console.log(add(1)(2)(3));
console.log(add(0)(0)(0)(1)()()()(1)); // вызов с пустыми скобками, то же что и вызов с нулем
// Фокусы с valueOf
console.log(add(1)(1) + add(5)(3));
console.log(add(1) + add() + add(9));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужно сделать так, чтобы можно было при помощи взять информацию из файла, который я выберу, а не заранее указывать в коде
Пытаюсь разобраться в промисах и async/awaitНашёл на хабре этот пример: