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

Exemplo Arrow function duvida

Olá, pessoal! Colocando aqui o exemplo da Juliana e do Leo neste vídeo, eu queria entender porque mesmo eu colocando numeros menores no argumento, o resultado ao rodar so cai na primeira condição.

//Arrow function com mais de uma linha de instrução

const somNumerosPequenos = (num1,num2) => {
    if (num1 || num2 > 10){
        return 0
    }else{
        return num1 + num2
    }
} 
console.log(somNumerosPequenos(5,2));
4 respostas
solução!

Oi Suellen, tudo bem?

O seu código está entrando na primeira condição por conta da precedência dos operadores. Dentro do if o seu código primeiro está realizando essa operação: num2 > 10, que retorna false quando o segundo argumento é 2, porém após a segunda operação : num1 || false onde o primeiro argumento é o 5 vai retornar true e assim caindo nessa primeira condição.

Ficou mais claro? Qualquer dúvida, estou à disposição.

Oi Diego, as coisas estão começando a clarear, mas ainda n entendi porque 5||false retorna true.

Oi Suelen, então...

O operador OR || tem uma avaliação chamada de "curto-circuito" e funciona da esquerda para direita. O 5, ou qualquer outro número diferente de 0, são chamados de valores truthy porque podem ser convertidos para true, logo sua expressão ficará da seguinte forma: true||false. Como ele avalia da esquerda para direita e como curto circuito, ao ver que o primeiro booleano é true o OR vai ignorar o segundo booleano e retornar o true.

Ficou mais claro agora? Qualquer coisa posso exemplificar com mais detalhes, devem existir milhares de materiais na internet com exemplos que cobrem todos os casos, mas a ideia é essa ai:

  • true|| true = true
  • true|| false = true
  • false|| true = true
  • false|| false = false

Abraço

Ahhh sim, entendi agora. Obrigada!