Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Seria essa uma boa ou má prática em programação JavaScript?

Olá,

Vendo a aula sobre funções, o instrutor abordou que podemos passar comportamentos para funções:

function percorreArray(array, comportamento){
  for (var i = 0; i < array.length; i++) {
    comportamento(array[i]);
  }
}

Resolvi fazer alguns testes. Criei a função acima e defini 3 arrays:

numeros = [0, 1, 2, 5, 7, 8, 4, 3];
tudo = ["maçã", 45, "banana", true, false, "João", 1, 0];
multiplicadores = [1, 2, 3, 4];

Comecei a brincar um pouco com algumas coisas bem básicas mesmo:

percorreArray(numeros, function(numero){
  console.log("Tá na vez do: " + numero);
});
*/

percorreArray(tudo, function(algo){
  if (typeof algo == 'string') {
    console.log(algo + " é uma string!");
  }else if (typeof algo == 'number') {
    console.log(algo + " é um number!");
  }else if (typeof algo == 'boolean') {
    console.log(algo + " é um boolean");
  }
});

Então tive a dúvida se eu conseguiria chamar uma função dentro dela mesma. O que acontece é que minha função é um loop. Tudo funcionou perfeitamente, mas o que eu quero saber é se é uma boa prática chamar uma função dentro dela mesmo (mesmo se for um loop acontecendo dentro de outro loop)?

percorreArray(multiplicadores, function(numero){
  multiplicandos = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  percorreArray(multiplicandos, function(multiplicandoAtual){
    console.log(numero + " * " + multiplicandoAtual + " = " + numero * multiplicandoAtual)
  });
});
1 resposta
solução!

Douglas, isso é recursividade, uma funcionalidade muito utilizada em Estrutura de Dados. Não é considerado má prática não, mas tem que ser utilizada com muito cuidado para não estourar erros de lógica e memória.

[]'s