Fala, Douglas! Tudo bem contigo?
Desculpe pela demora em dar um retorno!
Neste caso, o código possui um método chamado onmousemove
que espera receber uma ação do mouse. Você terá um código que ficará em "stand by constante" (só exemplificando) aguardando o movimento do mouse para desenhar.
O código "diz" o seguinte: "tenho um método que está aguardando o movimento do meu usuário. Se ele só mover o mouse sem clicar vou só ficar de olho nessa função que ele criou com a variável desenhar false
, porém, se ele clicar com o botão esquerdo do mouse a variável será true
, logo desenho conforme está dentro da função."
Resumindo, Douglas, o caminho que o código percorre vai depender do comportamento do mouse. Ele vai e volta dentro da função conforme o clique. Mas tudo isso por causa do método utilizado!
O bom amigo para ajudar nessas questões de comportamento e principalmente para encontrar erros, é o debbug dentro do navegador.
Clicando com F12 encontrará o console. Ao lado da aba console tem a aba sources. Nela, coloque um ponto de iniciação na linha em que quiser que o código comece a ser debbugado.

Logo após isso, dê um refresh na página e começará o debbug.
Para acompanhar, clique avançando passo a passo e verá o caminho que o código percorre

Esse exercício em específico não vai te ajudar muito, pois ele espera o comando do mouse e no debbug não é possível clicarmos no canvas e desenharmos enquanto debbuga, mas pegue um outro exercício que fez anteriormente e faça e esse teste! ;-)
Espero ter ajudado, Douglas!
Um abraço e bons estudos!