1
resposta

Existe necessidade??

Boa noite pessoal, existe alguma necessidade de se declarar 2x isso?

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

Esse é o programa do professor, porem fiz sem declarar esse codigo 2x e deu certo do mesmo jeito, alguem sabe se existe um motivo do professor ter feito isso? é so uma curiosidade, uma pequena pulga que ficou atrás da minha orelha.

<!-- fracao.html -->

<meta charset="UTF-8">
<canvas width="700" height="500"></canvas>

<script>

    function desenhaQuadrado(x, y, tamanho, cor) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.fillStyle=cor;
        pincel.fillRect(x,y, tamanho, tamanho);
        pincel.strokeStyle='black';
        pincel.strokeRect(x,y, tamanho, tamanho);
    }

    function desenhaTexto(texto, x , y) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.font='20px Georgia';
        pincel.fillStyle='black';
        pincel.fillText(texto, x, y);    
    }


    desenhaTexto("Qual é a fração?", 50, 30);

    var y = 50;
    desenhaQuadrado(50, y, 100, 'green');
    desenhaQuadrado(150, y, 100, 'green');
    desenhaQuadrado(250, y, 100, 'green');
    desenhaQuadrado(350, y, 100, 'white');

</script>
1 resposta

Oi, Everton. Tudo bem?

Excelente dúvida! Vamos entender melhor o motivo de o instrutor declarar duas vezes as variáveis tela e pincel.

Variáveis que são definidas dentro de uma função são variáveis locais desta função e somente estará acessível dentro dessa função. Por isso o instrutor precisou declarar as mesmas variáveis em cada uma das funções.

Uma variável global é definida quando declaramos uma variável fora de uma função, assim ela torna acessível a qualquer parte da nossa aplicação.

Sendo assim, uma alternativa é declarar apenas uma vez fora da função. Dessa forma:

<!-- fracao.html -->

<meta charset="UTF-8">
<canvas width="700" height="500"></canvas>

<script>

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

    function desenhaQuadrado(x, y, tamanho, cor) {
        pincel.fillStyle=cor;
        pincel.fillRect(x,y, tamanho, tamanho);
        pincel.strokeStyle='black';
        pincel.strokeRect(x,y, tamanho, tamanho);
    }

    function desenhaTexto(texto, x , y) {
        pincel.font='20px Georgia';
        pincel.fillStyle='black';
        pincel.fillText(texto, x, y);    
    }

    desenhaTexto("Qual é a fração?", 50, 30);

    var y = 50;
    desenhaQuadrado(50, y, 100, 'green');
    desenhaQuadrado(150, y, 100, 'green');
    desenhaQuadrado(250, y, 100, 'green');
    desenhaQuadrado(350, y, 100, 'white');

</script>

São duas lógicas diferentes que funcionam, a sua e a do instrutor!


Espero ter ajudado! Qualquer dúvida, estamos à disposição.

Parabéns pelo empenho e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!