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

Ainda e de novo o return

Olá, gostaria de saber se é possível "retornar" mais de um elemento com a ação 'return' ...

Primeiro fiz como no exercício e coloquei só o n2...

Mas depois fui verificar o que acontece se marcamos todas as 'var' para return, mas só voltou a de maior valor. Vou mostrar pra ver se me explico melhor:

function funcaoQualquer(n1, n2, n3) {

    var n1 = 10;
    var n2 = 20;
    var n3 = 30;
    return n1,n2,n3
}

var retorno = funcaoQualquer(retorno);
mostra(retorno)

Depois eu coloquei as três em 'return's separados, mas todos dentro da mesma função e aí eu recebi de volta só o primeiro parâmetro, de menor valor:

function funcaoQualquer(n1, n2, n3) {

    var n1 = 10;
    var n2 = 20;
    var n3 = 30;
    return n1;
    return n2;
    return n3;
}
var retorno = funcaoQualquer(retorno);
mostra(retorno)

Pergunta: Por que no meu primeiro 'teste' só apareceu o último parâmetro e no segundo só apareceu o primeiro?!

Obrigada!

4 respostas

Há algumas maneiras de dar return a mais de um valor. A que está mais próxima dos conhecimentos que vai adquirir (aula 9), usam variáveis do tipo array, que é uma variável que armazena vários valores ao mesmo tempo.

<script>
    function seiLaOQue(valor)    {

        variavel1 = valor[0] + 5;            // 2 - aqui você faz o que quiser com os valores encaminhados, contidos em vouEnviar
        variavel2 = valor[1] * 3;
        variavel3 = valor[2] - 7;

        var juntos = [variavel1, variavel2, variavel3];        // 3 -aqui você empacota os novos valores pra devolver ao programa principal

        return juntos;            // 4 -e aqui você devolve
    }


    var vouEnviar = [2, 3, 4];        // 1 - você envia estes valores ou mais se quiser, dentro da var 'vouEnviar'

    var recebido = seiLaOQue(vouEnviar);    // 5 - e recebe na var 'recebido' o conteúdo da var 'juntos'

    document.write("Este é o pacote que enviou: " + vouEnviar);

    document.write("<br>");
    document.write("Este é o pacote que recebeu: " + recebido);

    document.write("<br>");
    document.write("Estes são os três valores somados: ");
    document.write(recebido[0] + recebido[1] + recebido[2]);

</script>

Seu segundo exemplo retorna 'n1' porque 'return' interrompe a execução do código. Tudo o que vem depois de 'return' deixa de ser executado.

No seu primeiro exemplo, não sei qual explicação lhe dar, pois me parece fugir à sintaxe prevista, mas realmente, ele retorna o último valor.

solução!

Olá Bruna,

É possível sim retornar mais de um valor. Isso foge um pouco do escopo do curso que está fazendo, mas você verá em cursos posteriores.

No primeiro exemplo que citou a sintaxe está incorreta, por isso você não obtém o retorno previsto. No segundo exemplo também não faz sentido ter mais de um return pois a execução do código é interrompida assim que o primeiro é executado.

Então, como podemos enviar mais de um valor? Vou deixar abaixo um exemplo de como poderia fazer isso:

<meta charset="utf-8">

<h1>Função retorna 3 valores</h1>

<script>
    function pulaLinha() {
        document.write("<br>");
    }

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

    function retorna_valores() {
        var x = 100;
        var y = 200;
        var z = 300;
        return {
            valorX: x,
            valorY: y,
            valorZ: z
        }
    }

    var retorno = retorna_valores();
    mostra(retorno.valorX);
    mostra(retorno.valorY);
    mostra(retorno.valorZ);
</script>

Testa por aí e nos diga o resultado.

Bons estudos!

Oi Akashi, obrigada pela resposta... Mas devo dizer que achei bem complicada. rs (sobretudo porque faz um tempo que eu não venho estudar, até meio que "esqueci" pra que é que a gente usa o return.... :( - é pra retornar um número quando usamos em uma função para realizar um cálculo, algo assim, né?) .. Mas, enfim, se puder, numa próxima vez, tentar explicar mais simplificado, talvez seja mais fácil... Obrigada na mesma!

André, obrigada pela complementação à resposta do colega, está mais simples e consegui perceber melhor como que funciona o código... que o return é igual a outros códigos que possuem o "bloco" {} . Legal.

Olá Bruna,

Estamos aqui pra qualquer dúvida. O importante é sempre praticar. Só se aprende a programar programando... é codando, errando, testando, até dar certo e o mais importante é o que você está fazendo...compreendendo os conceitos por trás de cada linha de código!! É isso aí!

Bons estudos!!