Resumen

Por ahora, todas las funciones que hemos construido se pueden definir como First Class Functions, sin embargo, existen otro tipo de funciones que conocemos como Higher Order Functions o funciones de alto orden y podemos distinguirlas porque reciben otra función como argumento.

Un buen ejemplo de funciones de alto orden es la función .map de JavaScript:

// Ciclo for (sin HOF)
const array = [1, 2, 3]
const array2 = []

for (let i = 0; let i < array.length; i++) {
        array2.push(array[i] * 2)
}

// Utilizando la función .map (HOF)
const array = [1, 2, 3]
const array2 = array.map(item => item * 2)

// Ambas formas devuelven el mismo resultado,
// sin embargo, utilizando HOFs podemos escribir
// código mucho más legible y fácil de entender
console.log(array2) // [2, 4, 6]