3
respostas

Usando return

Ao invés de criar mais variáveis e criar mais um "if" para testá-las, não posso simplesmente sair com um "return"???

3 respostas

Fala aslobo, tudo bem ?

O return statement é utilizado no contexto de funções. Simbolizando uma saída da execução da função, podendo devolver um valor pra quem invoca a função ou não.

Não entendi muito bem o contexto/exemplo onde você está tendo a dúvida, mas a ideia do return é essa. Se possível coloque o exemplo onde você está praticando, aí da pra ter mais detalhes.

Espero ter ajudado. Abraço !

Seguindo o código do exemplo, eu posso, ao invés de escrever

var pesoEhValido = true;
var alturaEhValida = true;

    if(peso <= 0 || peso >= 300){
        console.log("Peso inválido!!")
        pesoEhValido = false;
    }

    if(altura <= 0 || altura >= 3.0){
        console.log("Altura inválido!!")
        alturaEhValida = false;
    }

    if(pesoEhValido && alturaEhValida){
        tdImc.textContent = calculaImc(peso, altura);
    }

Não poderia fazer isso

    if(peso <= 0 || peso >= 300){
        tdImc.textContent  ="Peso inválido!!";
        return;
    }

    if(altura <= 0 || altura >= 3.0){
        tdImc.textContent  = "Altura inválido!!";
        return;
    }

    tdImc.textContent = calculaImc(peso, altura);

Fala aslobo, tudo bem ?

Não é possível escrever o return nesse contexto, isso resulta no erro: Uncaught SyntaxError: Illegal return statement. O statement return deve ser usado dentro do escopo de funções apenas, e não para estruturas como if/switch-case ou while/for.

No caso do seu programa, se você tem a intenção de parar a execução imediatamente após informar peso ou altura inválidos, você pode usar o else para o if:

var pesoEhValido = true;
var alturaEhValida = true;

if(peso <= 0 || peso >= 300){ // caso esse if seja executado os demais não serão, pois são casos contrários ao teste
    console.log("Peso inválido!!")
    pesoEhValido = false;
} else if (altura <= 0 || altura >= 3.0){ // caso o primeiro if seja falso, testa este if, como possível caso alternativo // se ele for executado, o else logo abaixo não será, pois é um novo caso contrário a este
    console.log("Altura inválido!!")
    alturaEhValida = false;
} else { // só será executado caso os dois ifs anteriores falharem
    tdImc.textContent = calculaImc(peso, altura);
}

E nesse caso, poderia até dispensar o uso das variáveis que determinam validade (a não ser que as use para outros fins):

if(peso <= 0 || peso >= 300){
    console.log("Peso inválido!!")
} else if (altura <= 0 || altura >= 3.0){
    console.log("Altura inválido!!")
} else {
    tdImc.textContent = calculaImc(peso, altura);
}

Espero ter ajudado. Abraço!