Oi, Álvaro. Espero que esteja tudo bem por aí!
Acredito que o problema esteja ocorrendo porque o método length esta escrito de forma incorreta. Além disso , de acordo com o código do instrutor, está faltando um método no seu projeto. Esse método é o passouTodaAtela(), ele funciona para dividir melhor as responsabilidades entre as funções e deixar o codigo mais legível. Vou explicar com mais detalhes.
A function passouTodaAtela() é utilizada como condição na função voltaPosicaoInicialDoCarro(), que no seu caso é a function loopCarro(). Vou exemplificar com mais detalhes no código:
O método passouTodaATela() executa uma ação a partir de um valor , que no caso é o parâmetro xCarro. Ele vai retornar uma ação, que é o valor passado < - 50. Olha só como fica:
function passouTodaATela(xCarro){
return xCarro < - 50;
}
Esse método será utilizado como condição na função função voltaPosicaoInicialDoCarro(). Nesse caso, é atribuído como valor do parâmentro da passouTodaATela a variável xCarros e seu contador . Depois de feita a verificação dentro da condição, se for verdadeira, o xCarros vai para posição 600 (que aqui foi definido como o início da borda da tela).
olha só no código:
function voltaPosicaoInicialDoCarro(){
for (let i = 0; i < imagemCarros.length; i = i + 1){
if (passouTodaATela(xCarros[i])){ //bem aqui o método sendo utilizado
xCarros[i] = 600;
}
}
}
Espero que as informações tenham ajudado.
Em caso de dúvidas fico à disposição.
Um abraço e bons estudos!