Qual é a definição de uma função de ordem superior?
Uma função de ordem superior é qualquer função que recebe uma ou mais funções como argumentos, que ela usa para operar em algum dado e/ou retorna uma função como resultado. As funções de ordem superior têm como objetivo abstrair alguma operação que é realizada repetidamente. O exemplo clássico disso é o map, que recebe como argumentos um array e uma função. O map então usa essa função para transformar cada item no array, retornando um novo array com os dados transformados. Outros exemplos populares em JavaScript são forEach
, filter
e reduce
. Uma função de ordem superior não precisa apenas manipular arrays, pois há muitos casos de uso para retornar uma função de outra função. Function.prototype.bind
é um exemplo desse tipo em JavaScript.
Map
Vamos supor que temos um array de nomes no qual precisamos transformar cada string em maiúsculas.
const names = ['irish', 'daisy', 'anna'];
A maneira imperativa seria assim:
const transformNamesToUppercase = function (names) {const results = [];for (let i = 0; i < names.length; i++) {results.push(names[i].toUpperCase());}return results;};transformNamesToUppercase(names); // ['IRISH', 'DAISY', 'ANNA']
Use .map(transformerFn)
torna o código mais curto e mais declarativo.
const transformNamesToUppercase = function (names) {return names.map((name) => name.toUpperCase());};transformNamesToUppercase(names); // ['IRISH', 'DAISY', 'ANNA']