function oMaior (a, b, c){
if(a > b && c){
return (`${a} é o maior`);
}if (b > a && c){
return (`${b} é o maior`);
}if (c > a && b){
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20));
function oMaior (a, b, c){
if(a > b && c){
return (`${a} é o maior`);
}if (b > a && c){
return (`${b} é o maior`);
}if (c > a && b){
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20));
Oi, Marcos! Tudo bem?
O problema ocorre devido à forma como estamos utilizando as condições dentro dos if
. Quando escrevemos a > b && c
, o JavaScript interpreta isso como a > b
e c
sendo um valor verdade (truthy), ou seja, não estamos comparando a
, b
e c
da maneira como esperamos.
Para corrigir isso, devemos fazer cada comparação explicitamente, de acordo com o exemplo abaixo:
function oMaior(a, b, c) {
if (a > b && a > c) {
return (`${a} é o maior`);
} else if (b > a && b > c) {
return (`${b} é o maior`);
} else {
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20));
Agora, a função compara corretamente a
, b
e c
em cada if
e quando chamarmos oMaior(10, 5, 20)
, o resultado será 20 é o maior
.
Espero ter ajudado!
Um forte abraço e bons estudos!