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

Soma de variáveis dando NaN

Olá! Tentei criar uma função com parseInt(prompt(msg)), fazer uma série de perguntas cujas respostas devem ser valores de 1 a 5 e, no final, serem somadas. Entretanto, quando tento usar a função, o valor da soma dá NaN. Tentei fazer sem usar a função e funcionou normalmente. Não consegui entender por quê o valor deu NaN.

Código da função, perguntas e soma:

function pergunta(msg) {
        parseInt(prompt(msg));
        return;
    }

        var pergunta1 = pergunta("Gosto de ajudar as pessoas.");
        var pergunta2 = pergunta("Não tenho medo de fazer coisas novas.");
        var pergunta3 = pergunta("Dinheiro é importante.");
        var pergunta4 = pergunta("Conhecimento é importante.");
        var pergunta5 = pergunta("Sempre tomo a iniciativa para resolver um problema.");
        var pergunta6 = pergunta("A justiça não é preta nem branca, é cinza.");
        var pergunta7 = pergunta("Prefiro sair ao ficar em casa.");
        var pergunta8 = pergunta("Tomo minhas decisões sem receios.");
        var pergunta9 = pergunta("O silêncio é a melhor música.");
        var pergunta10 = pergunta("Meu corpo é um templo.");

        var resultado = pergunta1 + pergunta2 + pergunta3 + pergunta4 + pergunta5 + pergunta6 + pergunta7 + pergunta8 + pergunta9 + pergunta10;

        document.write(resultado);

            console.log(resultado);
2 respostas
solução!

Olá, Emidio! Tudo bem?

Você está atribuindo o valor que a função retorna para as variáveis de pergunta, certo? Mas na função, ela não retorna nada, pois o return é vazio.

Você pode fazer de dois jeitos:

1 - Retornar o resultado direto

function pergunta(msg) {
  return parseInt(prompt(msg));
}

2 - Passar para uma variável e retornar a variável

function pergunta(msg) {
  var resposta = parseInt(prompt(msg));
  return resposta;
}

Então, a soma deu NaN porque os valores da soma não eram números, pois estavam "vazios".

Espero ter ajudado!

Valeu, Leonardo!

Pensava que o return retornava o valor do comando que estava acima dele.