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

Variável não declarada na função

Quero entender por que as intrunções c.fill, c.arc, (...), funcionam mesmo sem a declaração? Por que não houve necessidade do trecho que está comentado dentro da função?

<meta charset="utf-8">
<canvas id="quadro" width="600" height="400"></canvas>

<script>
    function clicaNaTela(evento) {
        /*var quadro = document.getElementById("quadro");
        var c = quadro.getContext("2d");*/
        var x = evento.pageX - quadro.offsetLeft;
        var y = evento.pageY - quadro.offsetTop;
        c.fillStyle = "red";
        c.beginPath();
        c.arc(x,y,25,0,2*3.14);
        c.fill();

        console.log("posição do clique: " + x + ", " + y);
        }

    var quadro = document.getElementById("quadro");
    var c = quadro.getContext("2d");

    c.fillStyle = "gray";
    c.fillRect(0,0,600,400);

    quadro.onclick = clicaNaTela;
</script>
2 respostas

Oi Geovane,

É que estas variáveis já estão declaradas fora da função. No momento que a função é chamada, elas já existem.

Abraço!

solução!

Quando você declara var c = .... você está declarando ela no escopo global, então ela fica visível dentro da função.

Como você só chama a função clicaNaTela depois da declaração, a variável já está fazendo referência ao objeto que por sua vez já pode chamar as fill e arc.