Функциональное программирование.

Чистыми называют те функции которые работают исключительно с передаваемыми в них параметрами.

Если ф-ция работает с переменными, определенными за ее пределами, то она не является чистой и имеет побочный эффект.

Допустим у нас есть список.

Определим функцию перебора элементов массива.

Применим ее для вывода элементов в консоль.

Сделаем функцию, которая изменяет элементы массива.

var fruits = ['cherries', 'apples', 'bananas']
function forEach(arr,fn){
    for(let i=0; i<=arr.length-1; i++){
        fn(arr[i]);
    }
}

Предположим у нас есть массив.

Функция сортировки имееет вид.

Ее можно вызвать без аргументов.

Общий вид функции-сравнивателя.

Предположим у нас есть сложныый объект.

Мы хотим отсортировать его по полю firstname.

 var fruits = ['cherries', 'apples', 'bananas']
arr.sort([функция-сравниватель])

Создать функцию высшего порядка forEachObject которая имеет такую сигнатуру

Данная функция проходит по всем свойствам объекта и применяет function к каждому из свойств согласно сигнатуре выше.

При этом необходимо брать свойства только этого объекта, не затрагивая унаследованные через prototype.

forEachObject(object,function(property,object[property]))
Потратить 2 кредита и начать обучение!
Задать вопрос, прокомментировать.