Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
Ми явно това е начинът, мислех, че може да има нещо по-хитро с рекурсията ама щом Stackoverflow казва така значи няма какво да го мислим повече.
Най-чист ми се видя като че ли този вариант. Но пак за да се изпечата резултата трябва да се обърне към число с +:
function add(a) {
var sum = a;
function addInner(b) {
sum += b;
return addInner;
}
addInner.toString = function() {
return sum;
};
return addInner;
}
var addTwo = add(2);
console.log(+addTwo); //2
var addTwo = add(2);
console.log(+addTwo(3)(5)(1)(7)); //18
Тва с плюса ми изглежда като някакъв хак, ама не мога да измисля/намеря нещо друго, което да върши работа... В browser-а всичко си работи, ама в node.js се чупи нещо.
Аз това подкарах:
console.log(add(1)(2).toString());
Иначе в браузъра с alert() си работи и без to.String- a
console.log(parseFloat(add(2)(2)(3)));
Кастване стринг към число с parseFloat()
Edit: Ето нещо интересно - Functional Composition
Колегата f31m6d е споделил същия ресурс - ще пусна линк към него!
зора беше да работи както в условието, без допълнения
var addTwo = add(2);
console.log(addTwo(3)(5));
трябва да принтира 10
ама май няма как да се случи тва :\
иначе има и други заобиколки - става и с ! отпред примерно
В node.js при мен си работи коректно това!
Аз я реших по подобен начин -> Решение
В случая съм направил IIFE, което прави магии. Идеята е там, че при всяко извикване на функцията (addition) ние не дефинираме/предефинираме нови такива, а просто променяме едно число и връщаме настоящата, което си е доста по-бързо.
Също така съм override-нал default-ния console.log, защото не е забранено в условието. Това ми дава право да проверявам дали съм подал като параметър моята функция и ако да - принтираме резултата.
PS: Ето още едно решение, което запазва default-ното поведение на console.log