1
resposta

Por que declarar a variável desenha = false?

Não entendi por que teve que declarar a variável desenha como false ao final, se ela já está declarada nas funções habilitaDesenhar e desabilitaDesenhar.

var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

 var desenha = false;
    var corAtual = 'blue';
    var xVermelho = 0;
    var xVerde  = 50;
    var xAzul = 100;
    var yQuadrados = 0;
    var tamanhoQuadrados = 50;

    desenhaPaletaDeCores();

    tela.onmousemove = lidaComMovimentoDoMouse;

    tela.onmousedown = habilitaDesenhar;

    tela.onmouseup = desabilitaDesenhar;

    tela.onclick = selecionaCor;
1 resposta

A variável deve ser declarada como false ao final, porque, uma vez que ela passa pra true, ela permanece assim, até que você diga no código que "quando não estiver mais desenhando, o desenha é false", senão, você ia continuar riscando a tela depois de parasse de clicar com o mouse.

Espero ter ajudado.