Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

fpfilipov94 avatar fpfilipov94 7 Точки

Exercises: Advanced Functions - 3.Functional Sum

Някой успял ли е да реши 3та задача от упражнението и ако да - може ли да сподели как. Успях да накарам функцията да връща себе си, ама как и къде да направя closure за стойността и как да точно променя toString и да запазя и него идея си нямам.

Тагове:
0
JavaScript Advanced
djc_bg2015 avatar djc_bg2015 923 Точки
let f = (function () {
    let total = 0;
    return function sum(a) {
        total += a;
        sum.toString = () => total;
        return sum;
    }
})();

console.log(f(6)(7));

ето какво се случва, пазим резултата в clousure скоупа, функцията презаписва toString така че да връщша тотала и връща сама себе си.

тоест викаш квото викаш, и като му речеше стрингосай се то вика tostring и връща резултаа на изпълнението () => total

 

2
23/10/2016 20:08:39
Silenci0 avatar Silenci0 27 Точки

А какво се случва като ретърнеш функцията без скоби? И каква е разликата? 

0
djc_bg2015 avatar djc_bg2015 923 Точки

Ето различните извиквания и резултатите от тях:

 

Ако има нещо неясно пиши ;)

2
achobanov avatar achobanov -4 Точки

Не ми е ясно как точно се извиква .toString() когато викаме функцията с console.log(). И то даже го пише в условието - Node.js does not explicitly invoke toString(). Как тогава трябва да го извикаме, така че function(1)(2)(3)  да връща 6, а не  [Function]

0
djc_bg2015 avatar djc_bg2015 923 Точки

В unit теста, който проверява решенията са използвали Number(функцията която си подал), по документация Number() приема параметър от тип стрин и прави следното ако не е стринг:

string

The value to parse. If the string argument is not a string, then it is converted to a string (using the ToString abstract operation). Leading whitespace in the string argument is ignored.

1
24/10/2016 15:56:47
a_dimitrov avatar a_dimitrov 20 Точки

Това къде може да се види

0
Nani15 avatar Nani15 12 Точки

console.log(Number(add(1)(2)(3)));

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.