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));
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!
O problema no seu código está no uso incorreto dos operadores lógicos dentro dos condicionais if. Quando você escreve algo como a > b && c, o && não está comparando corretamente os valores que você deseja. Isso é porque c sozinho não é comparado diretamente, mas é avaliado como um valor "verdadeiro" ou "falso" (truthy ou falsy). Isso pode causar comportamento inesperado.
O correto seria comparar os três valores entre si em cada condição. A comparação deveria ser algo como a > b && a > c para verificar corretamente se a é maior que ambos b e c.
Aqui está o código corrigido:
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)); // 20 é o maior