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

[Dúvida] Desafio 2 - Lógica de função

Durante o desafio "2. Criar uma função que recebe um nome como parâmetro e exibe "Olá, [nome]!" no console.", estive tentando criar uma função que pudesse ser reaproveitada para outras variáveis que também precisassem coletar o valor do campo "prompt", mas o resultado que me é retornado é "nameInput" (nome da variável criada):

const nameInput = prompt("Digite o seu nome: ");

//A função "showText" tem como parâmetros "variableName" (coletará o nome da variável definida no momento em que a função for chamada) e "promptCollect" (coleta apenas o resultado/valor de prompt).

function showText(variableName, promptCollect) {
    let returnInput = variableName.valueOf(promptCollect);
    console.log(returnInput);
};

// Chamei a função e passei como valor do parâmetro "promptCollect" = "prompt", e "variableName" = "nameInput"

showText("nameInput" , "prompt");

Gostaria de identificar o que errei durante esse processo, pois mesmo pesquisando não estive conseguindo entender :(

Caso pudesse me informar como posso pesquisar mais sobre isso, ficaria grato!

2 respostas

O modo mais rápido que fiz, mas que deixou a função sem a possibilidade de passar nomes de variáveis como parâmetros da função foi:


//A função "showText" tem como parâmetro "nome", que seria com o objetivo de coletar o nome da pessoa. 

function showText(nome) {
    nome = prompt("Digite seu nome: ");
    returnValue = console.log(`Olá, ${nome}`);    
};

// Chamamos a função e passamos como valor do parâmetro "nome" sendo "input".
showText("input");


solução!

Oi, Bruno! Tudo bem?

Quando chamamos a função showText, podemos observar que estamos passando "nameInput" e "prompt" como strings, em vez de passar a variável nameInput e a função prompt.

Para tornar a função mais flexível e capaz de funcionar com outras variáveis e coletar valores de prompt, devemos remover as aspas em torno de "nameInput" para passar a variável real como argumento.

Somado a isso, não é necessário passar "prompt" como um argumento, pois a função pode chamar o prompt diretamente.

Nosso código deve, então ficar da seguinte forma:

function showText(variableName) {
    let returnInput = prompt("Digite o seu " + variableName + ":");
    console.log("Olá, " + returnInput + "!");
}

showText("nome");

Agora a função showText aceita apenas um argumento, que é o nome da variável que desejamos coletar. A função chama o prompt com base nesse nome e, em seguida, exibe a mensagem "Olá, [nome]!" no console com o valor inserido pelo usuário.

Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

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