- Não consegui compreender como o carro estava andando, sendo que não estava em nenhum loop para sempre mudar o valor do seu eixo x.
xCar é a variável que define a posição do carro no eixo horizontal (x), quando definimos xCar -= 2, estamos dizendo para decrementar o valor de xCar, sendo assim se o carro se localiza na posição 70 do eixo x, vai "andar para esquerda" (já que é um plano cartesiano) em 2px, sendo assim a posição mudará para 68, dando a sensação de movimento. Aí quando o carro saí da tela do canvas fica com a posição do eixo x negativa, e quando ser menor que -70, ou seja, -71px para cima significa que o carro já saiu completamente da tela, e volta para o eixo positivo na direita '600px'. 'xCar -= 2' é a mesma coisa que 'xCar = xCar - 2'.
- Colocando a movimentação do carro em um loop, mesmo com a condição que se "i" for maior que 9 ele pare, o "i" nunca chega no 10.
A variável 'i' não chegará até 10 pois a flag de parada do loop for é 'i < 10' (se i for menor que 10), então caso seja 10 o laço de iteração não será executado, portanto não irar executar nem o console.log dentro desse laço.
- Quando eu altero a condição que no caso é "10", a velocidade do meu carro muda, não entendo o motivo desse comportamento.
O laço for dentro desta função está indicando que quando moveCars() ser chamada o decremento será realizado 9 vezes (já que a condição de parada é 'i < 10'), portanto se você aumentar o número de execuções, mais rápido o seu carro se moverá. Assim se você quiser que o seu carro se mova com o dobro da velocidade, você pode aumentar o valor do decremento de 'xCar -= 2' para ' xCar -= 4' ou aumentar o número de execuções, alterando o valor da flag de parada de 'i < 10' para 'i < 20'. Caso você queira estabelecer que a iteração deve ocorrer até 10 você pode especificar com o sinal 'menor ou igual à', ficando 'i <= 10', assim a iteração 10 será inclusa.