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

O azul só retorna no quarto clique mas deveria voltar no terceiro

function mudaCor() {

        if (arrayPosition >= colors.length){
            arrayPosition = 0;
        } else {
            arrayPosition += 1;
        }

        return 0;
    }

Não consegui entender a ordem da compilação, pq ao meu ver parece ser a mesma coisa que fazer assim:

function mudaCor() {

    arrayPosition += 1;

        if (arrayPosition >= colors.length){
            arrayPosition = 0;
        } 

        return 0;
    }

Mas nessa segunda forma, o retorno do azul, no terceiro clique com o botão direito, acontece corretamente enquanto na primeira só ocorre após o quarto clique.

2 respostas
solução!

Na primeira forma, você testa a posição atual e só depois incrementa. Para que funcionasse, você deveria verificar, no if, se a posição do array é igual a (color.length- 1), isso pq o array começa contando em 0, e a ultima posição será 2.

Na segunda forma, vc está testando a posição da frente, pois está incrementando antes de fazer o teste. Por isso pode verificar direto pelo tamanho do array (colors.length).

AAAAAH SIM! Entendi. Muito obrigrada, Alexandre! ^^