Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Funções em Array

Pessoal, tem como eu armazenar funções em um array e depois poder chamá-las uma a uma conforme fazemos com as cores?

Por exemplo temos esse código do exercício "Trocando bandeiras" da aula 04 de Lógica de Programação:

<canvas width="600" height="400"></canvas>

<script>

    function desenhaBandeiraBrasil() {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.fillStyle="green";
        pincel.fillRect(0, 0, 600, 400);

        pincel.fillStyle="yellow";
        pincel.beginPath();
        pincel.moveTo(300, 50);
        pincel.lineTo(50, 200);
        pincel.lineTo(550, 200);
        pincel.fill();

        pincel.beginPath();
        pincel.moveTo(50, 200);
        pincel.lineTo(300, 350);
        pincel.lineTo(550, 200);
        pincel.fill();

        pincel.fillStyle="darkblue";
        pincel.beginPath();

        pincel.arc(300, 200, 100, 0, 2* 3.14);
        pincel.fill();
    }


    function desenhaBandeiraAlemanha() {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.fillStyle = 'black';
        pincel.fillRect(0, 0, 600, 133);

        pincel.fillStyle = 'red';
        pincel.fillRect(0, 133, 600, 133);

        pincel.fillStyle = 'yellow';
        pincel.fillRect(0, 266, 600, 133);
    }

    var mostraBrasil = true;

    function trocaBandeira() {

        if(mostraBrasil == true) {
            desenhaBandeiraBrasil();
        } else {
            desenhaBandeiraAlemanha();
        }
        mostraBrasil = !mostraBrasil;
    }

    setInterval(trocaBandeira, 3000);

</script>

Esse código é da "Opinião do Instrutor". A finalidade é trocar as bandeiras do Brasil e da Alemanha a cada 3 segundos.

Mas se eu tivesse por exemplo umas 10 bandeiras, ao invés de fazer vários "if's", não seria possível guardar as funções em um array e chamar uma a uma a cada 3 segundos?

3 respostas
solução!

É possível guardar funções em um array. Vou mostrar um esboço para você:

function a() {
   console.log('a');
}

function b() {
  console.log('b');
}

var funcoes = [];
funcoes.push(a);
funcoes.push(b);

funcoes[0](); // chama primeira função
funcoes[1](); // chama segunda função

O código anterior é uma prova de conceito que mostra a capacidade de funções sem guardadas em um array para depois serem chamadas.

É um conhecimento válido, mas que você aprenderia caso quisesse avançar na linguagem JavaScript. Tem mais a ver com linguagem do que com lógica.

Sucesso e bom estudo meu aluno!

Muito obrigado pela atenção professor. Continuarei sim meus estudos em JavaScript. Aproveitando gostaria de parabenizar pelas aulas, não abrem margens para dúvidas.

Espero encontrá-lo futuramente nos cursos avançados desta fantástica linguagem.

Sucesso e bom estudo!