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

Uso do return em uma nova function.

No final do video foi criado uma nova function para verificar o retorno da posição dos carros.

**function voltaPosicaoInicialDoCarro(){ for(let i = 0; i < imagemCarros.length; i = i + 1){ if(passouTodaATela(xCarros[i])){ xCarros[i] = 600; } } }

function passouTodaATela(xCarro){ return xCarro < - 50; }

Eu coloquei dessa forma e obtive o mesmo resultado:

function voltaPosicaoCarros(){ for(let i = 0; i < xCarros.length; i = i + 1){ if(xCarros[i] < -50){ xCarros[i] = 650 } } }

Com menos linhas e menos uma função. Gostaria de saber se existe algo errado na forma que coloquei e/ou o que diferencia da forma que foi colocada na aula?

6 respostas

Estou com muita dificuldade de entender essa função function passouTodaATela(xCarro){ return xCarro < - 50; } o por que dessa variada xCarro se ele nem foi declarada?

solução!

Olá,Mikaela e Deivid, irei tentar responder os dois neste tópico...

Mikaela, sua função faz sentido, a única coisa que muda é o seu pensamento, em quanto o professor pensou em mexer nas imagens do carro, você mexeu na posição dos carros (Que está ligado com a imagem deles :v ). O único "problema" que vejo é a questão de tornar o código o mais legível para todos, até aqueles que são leigos em programação. (Você realmente economizou uma linha, mas o código pode ficar melhor legível se fizer a quebra das funções que irei explicar abaixo)

Aqui entra a dúvida do Deivid, a declaração return é para você retornar o valor de uma função para qualquer lugar que você queira, nesse caso foi para outra função. O que o mestre fez foi deixar o código mais lúcido, ele fez uma função somente para testar se o carrinho passou da tela com fluidez, ele tirou um "trabalho" da função voltaPosicaoCarros e deixo-a somente trabalhar com a questão de fazer o carro voltar para o início. Com isso, ele tirando essa "tarefa" dessa função, ele criou outra para terminar esse afazer, que é a função passouTodaATela e essa função retorna o valor dela para a função principal (Resumindo, ele dividiu os trabalhos).

Para ficar mais claro a declaração return darei um exemplo e se você quiser, utiliza o console da página para verificar (Você acessa esse console através da tecla F12 ou CTRL + SHIFT + i ).

Vamos ao exemplo:

 function quadrado (num){
    return  quadrado = num * num;
}

quadrado(2)
 console.log(quadrado);

Faça o teste de com/sem return você verá a diferença... Sem essa declaração a função somente faz a conta, mas não imprime o resultado para nós; para vermos o valor, devemos colocar o return.

Se você tirar o return da função passouTodaATela você verá que os carros nunca mais voltarão ao seu estágio inicial... Logo, reforçando a ideia, passouTodaATela necessita dessa declaração para retomar o valor na outra função (Faz isso por de trás dos panos)

Se continuar a dúvida, manda aqui para eu pensar uma outra forma de explicar.

Obrigado Matheus, vc ajudou muito, mas te confesso q tenho q estudar mais para entrar mais na minha cabeça. Sucesso p nós.

Boa Noite Matheus Ebon, o conceito e o que as funções estão fazendo eu entendi, eu queria saber porque o professor colocou xCarro ao invés da variavel xCarros na função: PassouTodaATela.

Obrigada Matheus. Agora fez mais sentido!!

Também tive a mesma dificuldade do Deivid de entender o a função PassouTodaATela a questão do parâmetro (xCarro) utilzado para testar se o carrinho passou toda a tela. Testei colocando (xCarros) -- "function passouATodaATela(xCarros){ return xCarros < -50;}" e deu o mesmo resultado.

Ainda não entrou na minha cabeça o (xCarro) da função PassouTodaATela, ser diferente da variável (xCarros) usada para armazenar as listas.