Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Duvida em trecho de código

Olá, tudo bem ?

Estou fazendo o curso Lógica de programação: laços e listas com JavaScript, e estou com uma duvida referente ao trecho do código disponibilizado pelo professor, o código trecho do código seria:

let xCarros = [600, 600, 600];
let yCarros = [40, 96, 150]; 
let velocidadeCarros = [2, 2.5, 3.2];



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           
}

A minha duvida seria em dois tópicos, sobre a função passouTodaATela e sobre o if usado no código, minha duvida sobre o if seria que ele passou a função como condição, isso me deixou um pouco confuso.

Esse trecho do código foi tirada da aula "03 Melhorando o Código" do módulo "Lista e laços de repetição" , desde já agradeço a atenção e paciência de todos.

1 resposta
solução!

Fala Gustavo, tudo certo?

É bastante comum passar funções como condicionais dentro de estruturas if, while e sempre que são esperadas expressões condicionais. Para entender o porquê funciona, vamos olhar para a função passouTodaATela():

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

Essa função recebe a posição x de um Carro e verifica se essa posição é menor que -50, após isso retorna esse valor. É essa a parte importante sobre essa função, ela retorna verdadeiro, caso a condição seja satisfeita, ou falso caso não seja.

Sendo assim, quando utilizamos essa função dentro de um comando condicional o que acontece é o seguinte:

  • Avaliação do retorno da função
    • A função será executada com o valor passado e retornar verdadeiro ou falso.
  • Substituição no if
    • O retorno da função é "colado" no lugar dela, ou seja, se for true, vai ser if(true) e se for false vai ser if(false).
  • Execução (ou não) do bloco if
    • Se no passo anterior tivermos um if(true), o bloco de código referente ao if será executado, caso contrário, não.

E o mais legal é que é assim que funcionam os retornos de funções, que podem retornar também valores numéricos ou de texto. Legal né?

Se ainda tem dúvidas, pode perguntar que eu tento ajudar! =)

Um grande abraço e bons estudos!