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

Resultado inesperado ao chamar função

Alguém pode me ajudar a entender porque o resultado é sempre "Par", independente do valor atribuído para as variáveis?

Detalhe: Quando eu chamo a função assim console.log (golfScore()); a resposta e sempre "Par". Entretanto se chamar a função assim console.log (golfScore(par, strokes)); a função apresenta a resposta esperada...

Veja que ao criar a função já havia declarado quais as variáveis seriam utilizadas (function golfScore(par, strokes)).

<script>

var names = ["Hole-in-one!", "Eagle", "Bird", "Par", "Bogey", "Double Bogey", "Go Home!"];

var par = parseInt(prompt("Par for the Hole"));

var strokes = parseInt(prompt("Strokes for the Hole"));

function golfScore(par, strokes) {
    if (strokes === 1) {
            return names[0];
        } else if (strokes <= par -2) {
            return names[1];
        } else if (strokes == par -1) {
            return names[2];
        } else if (strokes == par) { 
            return names[3];        
        } else if (strokes == par +1) {
            return names[4];
        } else if (strokes == par +2) {
            return names[5];
        } else if (strokes >= par +3) {
            return names[6];
        }

    }

    console.log(par);
    console.log(strokes);
    console.log (golfScore());

</script>
3 respostas

Fala João, tudo certo?

está sempre caindo nessa condição:

else if (strokes == par) {

Provavelmente o valor que você está informando no prompt não é numérico, quando faz o parse para Int dá NaN.

Acho que não é isso, porque quando chamo a função assim console.log (golfScore(par, strokes)) ela também pega o par e o stroke do `parseInt. Só que apresenta o resultado correto.

Ao verificar o console.log(par) e console.log(stroke) os dados são numéricos.

A única diferença entre o resultado correto e o resultado "Par" é a forma de chamar a função.

O correto não seria a função executar sem que eu precisasse novamente informar quais as variáveis? console.log (golfScore())

Ao invés de eu precisar informá-las novamente? console.log (golfScore(par, strokes))

solução!

Se você colocar um breakpoint nessa function golfScore vai ver que o valor de par e stroke estão undefined, é por isso que está caindo sempre no else if (strokes == par).

Quando chamar a função, passe os valores como argumento que irá resolver:

console.log (golfScore(par, strokes));

Abraço!