Declarativo vs Imperativo (Javascript)
Funções declarativas informam oque deve ser feito e não como. Como podemos ver no exemplo a função map() aplica a função anônima (arrow function) (numero) => numero * numero a cada elemento do array numeros. O resultado é um novo array quadrados, que contém os quadrados dos elementos do array original.
const numeros = [1, 2, 3, 4, 5];
const quadrados = numeros.map((numero) => {
return numero * numero;
});
console.log(quadrados); // Output: [1, 4, 9, 16, 25]
Já funções imperativas é necessário informar como deve ser feito. O loop for controla explicitamente o fluxo do programa, percorrendo cada elemento do array numeros, calculando o quadrado do elemento atual e adicionando-o ao array quadrados. O resultado é o mesmo que no exemplo declarativo, mas a abordagem imperativa descreve mais detalhadamente como o programa deve realizar a tarefa.
const numeros = [1, 2, 3, 4, 5];
const quadrados = [];
for (let i = 0; i < numeros.length; i++) {
const numero = numeros[i];
const quadrado = numero * numero;
quadrados.push(quadrado);
}
console.log(quadrados); // Output: [1, 4, 9, 16, 25]