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

Duvida sobre o funcionamento de funções no java script

Nesse código a função está utilizando dados de variaveis fora da função. Isso é específico do javascript? Ou essas variáveis são globais? Porque estou vendo C também e lá a funções só trabalham com dados que estão recebendo no parâmetro. Ah, tbm não entendi muito bem o return false;

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

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

    var cor=["blue","red","green"]; <-----<-------------------
    var indice=0; <--------------------<------------------------

function desenha(evento){
        var cor=["blue","red","green"];
        var x=evento.pageX-tela.offsetLeft;
        var y=evento.pageY-tela.offsetTop;
        pincel.fillStyle=cor[indice]; <----------<-----------
        pincel.beginPath();
        pincel.arc(x,y,10,0,2*3.14);
        pincel.fill();
        console.log(x+","+y);
        console.log(evento);    
    }
    tela.onclick=desenha;

    function mudacor(){
        indice++; <------------------------<--------------------
        if(indice>=cor.length){
            indice=0; <--------------------<--------------------
        }
        return false; <------------------<--------------

    }

    tela.oncontextmenu=mudacor;
2 respostas
solução!

Olá Matheus, tudo bem com você?

Ou essas variáveis são globais?

Isso mesmo! Nesse primeiro momento no curso de lógica de programação a gente acaba utilizando bastante as variáveis globais, com o passar do curso ai vai sendo abordado parecido com outras linguagens, onde as funções irão trabalhar apenas com os parâmetros que elas recebem :)

Ah, tbm não entendi muito bem o return false;

Então, normalmente quando apertamos o botão direito em qualquer página, temos um menu de opções, com por exemplo:

  • salvar página como
  • selecionar tudo

Para evitar que apareça isso quando apertamos o botão direito no canvas colocamos esse return false, dessa maneira ele tira esse comportamento padrão, você pode checar isso comentando essa linha e vendo o resultado, mas é puramente para que não apareça esse menu, não tem nenhuma lógica por trás :)

Compreendeu? Qualquer coisa estou a disposição!

Abraços e Bons Estudos :)

ah, sim. Obrigado