Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

2a chamada com string

Olá, fiz o exercício assim e deu certo.

<meta charset="UTF-8">

<script>

    function fazPegadinha() {

        alert("Olá");
        alert("amiga!");
        alert("Tá");
        alert("bastante");
        alert("entediada?");
        alert("Em ficar");
        alert("Clicando em");
        alert("Ok");
        alert("né?");
    }

    fazPegadinha();

</script>

Contudo, resolvi testar colocar uma segunda chamada fazPegadinha(); com uma string dentro dela, já que a function está sem parâmetro achei que ao invés de exibir novamente os alertas a página exibiria o texto "Não deu certo"., string que eu havia definido. Por que isso não ocorreu?

Segue abaixo.

Obrigado!

<meta charset="UTF-8">

<script>

    function fazPegadinha() {

        alert("Olá");
        alert("amiga!");
        alert("Tá");
        alert("bastante");
        alert("entediada?");
        alert("Em ficar");
        alert("Clicando em");
        alert("Ok");
        alert("né?");
    }

    fazPegadinha();
    fazPegadinha("Não deu certo");

</script>
5 respostas

Oi Paulo, tudo bem?

Isso está acontecendo porque independente do que você passar para a função fazPegadinha(), ela sempre executará os alert dentro dela. Então tanto faz se você nenhum, um, dez ou mil parâmetros. O que sempre será executado nesse caso será:

alert("Olá");
alert("amiga!");
alert("Tá");
alert("bastante");
alert("entediada?");
alert("Em ficar");
alert("Clicando em");
alert("Ok");
alert("né?");

Oi Paulo, consegui te ajudar?

Fala Paulo (meu xará),

Complementando o que nosso amigo Daniel falou...

Caso você queira performar seu teste de maneira correta, além de passar a sua String como parâmetro, você precisa recebê-la em seu método (função) e utilizá-la dentro do seu método!

Veja abaixo:

function fazPegadinha(texto){
    alert(texto);
}
fazPegadinha("Não deu certo");

Caso você queira condicionar a exibição desse alert() apenas se seu método receber parâmetros, você pode utilizar o bloco condicional if

Se quiser um exemplo é só pedir!

Espero ter ajudado,

Abraços.

Oi pessoal,

Sim, eu entendi que não faz diferença, obrigado!

Se me permitem, eu só não entendi o por quê? Não sei se isso tem relevância pra discussão, mas, por qual motivo a linguagem foi desenvolvida para não passar nada na impressão da função fazPegadinha(); quando a criação da função function fazPegadinha() também está vazio em parâmetro, a lógica me faz pensar que se está vazia na primeira ele então aplicará o que está sendo passada na segunda. Enfim, não sei se me expliquei bem, mas independente disso agradeço a resposta, de forma prática eu entendi, só fiquei com essa interrogação na motivação.

Oi Paulo, tudo bem? Pode compartilhar este exemplo com IF sim, aplicarei o novo teste,

Obrigado pessoal.

Abrs.

solução

Fala Paulo, tudo bom?

Vou colocar aqui para você duas soluções, uma mais simples usando if, e uma mais elegante.

Usando if

function fazPegadinha(texto){
    if(texto)
            alert(texto);
    else alert("padrão");
}
fazPegadinha();         //exibe "padrão"
fazPegadinha("teste")            //exibe "teste"

Repare que acima optei por não utilizar as chaves, como temos apenas um comando, chaves se torna opcional.

Usando Default Parameter

function fazPegadinha(texto="padrão"){
    alert(texto);
}
fazPegadinha();                   // exibe "padrao"
fazPegadinha("teste");     //exibe "teste"

Nesse caso, se recebermos um parâmetro nessa função, então o valor de texto será o valor recebido, caso contrário, será o valor padrão (dafault) atribuído na assinatura do método ( texto="padrão")

Se ficar alguma dúvida, basta perguntar!

Espero ter ajudado, abraços!