3
respostas

[Dúvida] esclarecimento

Boa Noite, alguém poderia me explicar de forma mais simplificada essa questão e seu resultado?

function pulaLinha() {

    document.write("<br>");
}

function mostra(frase) {
    document.write(frase);
    pulaLinha();
}

function a(texto) {

    return "(" + texto + ")";
}

function b(texto) {

    return "@" + texto + "@";
}

function c(nome, sobrenome) {

    return b(nome + " " + a(sobrenome));

}

var resultado = c("Flávio", "Almeida");

mostra(resultado);
3 respostas

Oiê! Tudo bem com você?

Em um primeiro momento, esse código pode nos confundir um pouco, vamos olhá-lo mais de perto para compreender como cada função acontece separadamente e em conjunto?

  • function a(texto): quando a chamamos, precisamos passar alguma coisa como parâmetro. Caso uma palavra seja passada, ela será retornada com dois parênteses em seu início e fim, como no exemplo abaixo:

      function a(texto) {
          return "(" + texto + ")";
      }
    
      a("Olá, mundo!")

    Visto que passamos como parâmetro a frase “Olá, mundo!”, será retornado o seguinte resultado: “(Olá, mundo!)”.

  • function b(texto): semelhante à função a(), a função b() também recebe um valor como parâmetro e o retorna. A diferença aqui está nesse retorno, já que ele apresenta um símbolo de arroba (@) em seu início e fim.

  • function c(nome, sobrenome): essa função recebe dois parâmetros, nome e sobrenome. Dentro dela, estamos chamando as funções a() e b(), então, teremos algo assim:

    • A função a() é chamada e retorna o sobrenome com dois parênteses em seu entorno. Abaixo há o resultado dessa etapa:

        return b(nome + " " + "(Almeida)");

      Note que, após a execução da função a(), ela não aparece mais, somente o valor que ela obteve e retornou.

    • A função b(), a partir do conteúdo que lhe foi passado como parâmetro, irá retorná-lo com um símbolo de arroba no início e outro no fim. Quando fazemos uso do operador de soma (+) com strings, acontece a concatenação (união) destas. Logo, o nome que foi passado como parâmetro será concatenado com o espaço e com a string “(Almeida)”

      Sabendo disso, o resultado que estará presente dentro da função b() será "Flávio (Almeida)" e o valor retornado pela função c() será "@Flávio (Almeida)@"

Por fim, este valor retornado será armazenado na variável resultado, a qual será o parâmetro da nossa função mostra(), que apresenta o conteúdo na tela e pula uma linha.

Caso surja alguma dúvida após a minha explicação ou ao decorrer dos seus estudos, lembre-se que você pode enviá-la ao fórum. Ficarei feliz em te ajudar!

Grande abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Eu nao consegui entender o parametro texto. Porque tenho que usar ele nas function A e B, e pq tenho que escrever "tanana" + texto + "tanana". Nao daria para escrever apenas "tanana" + "tanana"?

Oi, Gabriel! Tudo certo?

O parâmetro texto será a mensagem que passaremos na chamada das funções a() e b(). Veja o exemplo abaixo:

function b(texto) {
    return "@" + texto + "@";
}

var saudacao = b("Olá, tudo bem?")

Depois de chamarmos a função b() e passarmos como parâmetro a mensagem “Olá, tudo bem?”, esta mesma mensagem será armazenada dentro do parâmetro texto, que é uma variável da nossa função. Ao fim, o conteúdo que está em texto será concatenado com os símbolos de arroba (@). Se fôssemos representar o que está ocorrendo, teríamos algo assim:

"@" + "Olá, tudo bem?" + "@"

Depois da concatenação das strings, o resultado final é retornado e armazenado dentro da variável saudacao.

O parâmetro texto é importante em ambas as funções, pois fará com que as mensagens passadas sejam retornadas de uma maneira diferente: com parênteses no início e no fim (caso seja a função a()) e com arrobas na parte anterior e posterior à mensagem (caso seja a função b()).

Caso não utilizássemos o parâmetro texto nas funções, somente seriam retornados os parênteses e os arrobas, desta forma: “()” e “@@”. Contudo, como queremos que algum conteúdo esteja no meio disso, texto torna-se necessário.

Gabriel, espero que tenha entendido minha explicação. Caso a dúvida persista, sugiro abrir um novo tópico no fórum. Dessa maneira, ampliamos a visibilidade da sua pergunta e assim conseguiremos te ajudar de forma mais assertiva. Fico à disposição para te auxiliar no que for preciso.

Até mais!