Olá, Murillo. Como vai você?
Sua pergunta é muito boa e faz todo o sentido porque parece que o valor pode ser "modificado de qualquer forma" ou que é um "bug" da linguagem.
O Fernando respondeu de uma forma bem interessante e acredito que podemos retomar alguns conteúdos para reforçarmos o que entendemos.
No primeiro momento o instrutor desmembrou a função voltaPosicaoInicialDoCarro() e criou uma nova para fazer a verificação do Movimento do carro pela tela, que é a função passouTodaATela() ( Nesse caso ele já tinha as variáveis com os valores dos carros e suas velocidades , que armazenou em lista para deixar o código mais fluido).
Dessa forma, o que aconteceu na function passouTodaATela(xCarro){ return xCarro < - 50; } é que o xCarro é um parâmetro da função.
Mas... o que são parâmetros de funções?
Todas as funções possuem em sua estrutura um parâmetro (que pode ser nomeado ou não na construção da função). Quando definimos uma função, temos uma forma (que chamamos de sintaxe) especial para declará-la, vamos ver como funciona?
Sintaxe de uma função
//Assim é a estrutura de uma função
function nome([param[, param[, ... param]]]) {
instruções;
}
nome: nome da função
param: o nome de um argumento a ser passado para a função (são os valores ou informações que vamos utilizar em nossa função);
instruções: instruções que formam o corpo da função (o que nós queremos que nossa função execute);
Vamos ver no código do instrutor como fica? :)
//Agora veja a função que o instrutor criou
function passouTodaATela(xCarro){
return xCarro < - 50;
}
nome: passouTodaATela
parâmetro: xCarro
instrução: return xCarro <- 50
O parâmetro é apenas uma forma de nomear que naquele local vai um valor (que chamamos de argumento), você poderia substituir o nome desse parâmetro por qualquer outro que o resultado seria o mesmo (apenas aconselhamos a inserir um nome que faça sentido por questões de boas práticas).
E como a função "voltaPosiçãoInicial()" vai saber o que é o xCarro?
A função voltaPosiçãoInicial() "sabe" pois o instrutor inseriu o valor da lista xCarros dentro do parâmetro xCarro , olha só:
function voltaPosicaoInicialDoCarro(){
for(let i = 0; i < imagemCarros.length; i = i + 1){
if(passouTodaATela(xCarros[i])){ //bem aqui ele inseriu a lista xCarros como o valor do parâmetro.
xCarros[i] = 600;
}
}
}
Separei aqui alguns links que podem te ajudar:
Aqui o instrutor fala um pouco sobre parâmetros nas funções https://cursos.alura.com.br/course/pong-javascript/task/56090
Aqui é a documentação oficial do MDN sobre funções
E mais um artigo do MDN também para você consultar como um Guia JavaScript sobre funções
Um abraço e bons estudos! :)