Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача функции в функцию (https://javascript.ru/forum/misc/81451-peredacha-funkcii-v-funkciyu.html)

Coreman 30.11.2020 01:29

Передача функции в функцию
 
Всем привет!
Не совсем понимаю как работает передача функция в функцию в этом примере :
function sum(arr, f){

    if(typeof f != 'function')
         f = x => x;
        return arr.reduce((a,x) => a += f(x),0); //  что здесь происходит?
    
    }

    console.log(sum([1,2,3])); //6
    console.log(sum([1,2,3], x => x * x)); // почему здесь 14?


Как работает f,это же вроде пустая ф-я,но ф-я, при вызове typeof f будет undefined.почему?

рони 30.11.2020 01:55

Цитата:

Сообщение от Coreman
что здесь происходит?

суммирование значений , которые вернёт функция f, если функция не задана, то по умолчанию f вернёт то что получила f = x => x;
1 + 2 + 3
Цитата:

Сообщение от Coreman
почему здесь 14?

x => x * x
1*1 + 2*2 + 3*3 = 14

Coreman 01.12.2020 18:37

Спасибо!А как вообще часто такую реализацию ф-ии используют на практике? И также интересно как часто используют возвращение функции из
функции :

function newSummer(f){
return arr => sum(arr, f);
}
const new sumOfSquares = newSummer(x=>x*x);
console.log(sumOfSquares[1,2,3]);

Alexandroppolus 01.12.2020 21:29

Цитата:

Сообщение от Coreman
А как вообще часто такую реализацию ф-ии используют на практике? И также интересно как часто используют возвращение функции из функции

это повсеместная практика, краеугольные камни, так сказать.
передача функции - колбеки всех видов, промисы, методы массивов.
возврат функций - каррирование, декораторы, замыкания..
в реакте вообще можно миллион примеров привести.


Часовой пояс GMT +3, время: 01:03.