Подобрете своя код, като използвате функции от по-висок ред.

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

Нека разберем това с код.

function square(value){
    return value * value;
}
let arr = [1,2,3,4,5];
console.log(arr.map(square)) // logs: [1,4,9,16,25]

В горния код функцията квадрат връща квадрата на предадена стойност. Тук map е функция от по-висок ред, която приема функция квадрат като аргумент.

Нека да разгледаме друг пример.

let arr = [1,2,3,4,5];
arr.forEach(element => {
    console.log(element * element);
})
//logs: 1,4,9,16,25

Тук forEach е функция от по-висок ред, която приема функцията със стрелка като аргумент и прилага това върху всички елементи от масиви.

След като знаете какво представляват функциите от по-висок ред, сега нека вземем пример, при който използването на функция от по-висок ред може да подобри вашия код.

В този скрипт имаме масив, който съдържа 5 имена. Ако видите, че във всеки цикъл преминаваме през масива с имена до конкретен индекс и извършваме някаква операция като в 1-ви цикъл, преобразувайки имената в главни букви, във 2-ри в малки, а в 3-ти добавяме „Здравей“ пред всяко име.
Така че тук едно нещо е обичайно във всеки цикъл, че извършваме някаква операция върху всеки елемент от масива.

Сега нека напишем този код, използвайки функции от по-висок порядък.

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

Създаването на функция от по-висок ред има много предимства. Ако има трудни части от реализацията, като например правилното определяне на граничните условия на цикъла, те се локализират за реализацията на функцията от по-висок порядък. Това ви позволява да коригирате всички грешки в логиката само веднъж, вместо да се налага да търсите всеки екземпляр от модела на кодиране, разпространен във вашата програма. Ако установите, че трябва да оптимизирате ефективността на операцията, отново имате само едно място, където трябва да промените нещо.

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