Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

2
respostas

Atividade

function saudacao(nome = "") {
    if (nome) {
        console.log(`Olá, ${nome}! Boas vindas!`);
    } else {
        console.log("Olá! Boas vindas!");
    }
}
saudacao("Maria");
saudacao();


const bemVindo = (nome = "") => {
    const mensagem = nome ? `Olá, ${nome} bem-vindo(a)!` : "Olá! bem-vindo(a)!";
    console.log(mensagem);
};

bemVindo("Lucas");
bemVindo();
2 respostas

Olá, Alan. Como vai?

Excelente publicação compartilhando duas formas diferentes e muito elegantes de resolver o mesmo problema! É ótimo ver como você praticou tanto a sintaxe tradicional de funções com blocos if/else quanto a sintaxe moderna utilizando Arrow Functions combinadas com o Operador Ternário (? :).

Gostaria de destacar e parabenizar um detalhe técnico sutil que você aplicou perfeitamente em ambas as abordagens:

  • Tratamento de Strings Vazias como "Falsy": No seu código, você definiu o parâmetro padrão como uma string vazia (nome = ""). No JavaScript, uma string vazia é considerada um valor falsy (que se comporta como falso em testes lógicos). Por isso, a sua verificação if (nome) ou o ternário nome ? ... funcionam de forma cirúrgica: se o nome não for enviado, a string vazia cai direto no bloco do else, evitando mensagens estranhas como "Olá, undefined!".

Para agregar ainda mais valor ao seu aprendizado sobre manipulação de strings e funções, uma boa prática de mercado quando lidamos com nomes digitados por usuários é aplicar o método .trim().

Se um usuário acidentalmente chamar a sua função passando apenas espaços em branco, como saudacao(" "), o JavaScript interpretará esses espaços como um valor verdadeiro (truthy) e a mensagem sairá quebrada: "Olá, ! Boas vindas!". O .trim() remove esses espaços vazios das pontas.

Veja como poderíamos adicionar essa camada extra de proteção na sua Arrow Function:

const bemVindoProtegido = (nome = "") => {
    // Remove espaços em branco do início e fim do texto
    const nomeLimpo = nome.trim();
    
    // Se a string ainda tiver conteúdo após a limpeza, exibe o nome
    const mensagem = nomeLimpo ? `Olá, ${nomeLimpo} bem-vindo(a)!` : "Olá! bem-vindo(a)!";
    console.log(mensagem);
};

bemVindoProtegido("   "); // Trata os espaços e exibe corretamente: Olá! bem-vindo(a)!
bemVindoProtegido("  Lucas  "); // Limpa as pontas e exibe: Olá, Lucas bem-vindo(a)!

Dominar essa transição entre funções nomeadas e arrow functions com operadores compactos dá uma base fortíssima para qualquer desenvolvedor no ecossistema Front-end. Continue com esse ritmo excelente de estudos e testes!

Espero que possa ter lhe ajudado!

Muito obrigado pelo retorno e dica, ainda não conhecia o .trim(), vou começar utilizar.