Своеобразные немедленно вызываемые функции, которые оставляют переменную на месте - PullRequest
0 голосов
/ 26 мая 2020

В этот ответ Я не понимаю, что происходит с немедленно вызванной функцией, которая предоставляет текущую или кумулятивную сумму элементов введенного массива. Первая версия взята из связанного ответа, а вторая версия эквивалентна:

const cumulativeSum = (sum => value => sum += value)(0);

console.log([5, 10, 3, 2].map(cumulativeSum));

const cumulativeSum2 = (function(sum){ return function(value) {return sum += value}})(0)

console.log([5, 10, 3, 2].map(cumulativeSum2));

Казалось бы, немедленные вызовы должны оцениваться следующим образом:

cumulativeSum = value => 0 += value
cumulativeSum2 = function(value) {return  0 += value}

Но консоль показывает, что это на самом деле

cumulativeSum = value => sum += value;
cumulativeSum2 = function(value) {return  sum += value;}

Как переменная sum переживает немедленный вызов? Что происходит с этими функциями? Есть ли для него название?

...