1
resposta

Q

Fiz dois códigos interagindo com o usuário usando prompt o PRIMEIRO foi com o calculo do IMC que me retorna o resultado da formula do IMC e o SEGUNDO foi um código que apenas somam dois números , mas no SEGUNDO eu fui orientada a usar Number (prompt ( " ")) ; para que meu código conseguisse rodar corretamente , deu certo pois o código sem o Number leu como se fosse um texto e ao invés de somar os números ele os junta, já usando o Number consegui que me retornasse a soma dos números. Porém minha duvida é por que no PRIMEIRO código que usei prompt pra fazer um calculo do IMC não foi preciso usar o Number .

insira seu código aqui

PRIMEIRO CODIGO

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
    }

    function calculaImc(altura, peso) {

        return peso / (altura * altura);

    }

    var nome = prompt("Digite seu NOME por favor ");
    var pesox = prompt(" Digite seu PESO por gentileza ");
    var alturax = prompt(" Digite sua ALTURA, NÃO esqueça de usar . ");



    var imc = calculaImc (alturax, pesox);

    document.write(nome + " seu Imc é = " +  imc);





</script>

SEGUNDO CODIGO 


meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }



    function functionQueseChamasoma (a ,b) {
   var instrucaoDadaSera = (a +b);
   return instrucaoDadaSera;
}

var perguntaNumero1 = Number (prompt( " Digite um numero "));
var perguntaNumero2 = Number (prompt ("Digite outro numero para ser somado"));

var aVarQueVamosAtribuirValorDeUmaFuncao = functionQueseChamasoma (perguntaNumero1 ,perguntaNumero2 ) ;


document.write (" O resultado de sua soma é " + aVarQueVamosAtribuirValorDeUmaFuncao );




 </script>

1 resposta

Oii, tudo bem por aí?

Peço desculpas pela demora em te responder.

Isso acontece pois o JavaScript faz algumas conversões de tipo por baixo dos panos. Chamamos isso de linguagem dinamicamente tipada.

No caso do código do IMC, o cálculo envolvia multiplicação e divisão, e o JS entende que esse tipo de operação é obrigatoriamente feita entre objetos numéricos e faz essa conversão.

Porém o sinal de adição ( + ) tem duas funcionalidades na linguagem:

  • Quando utilizamos o sinal de adição e um ou ambos componentes da operação é do tipo string, o resultado será uma concatenação. Em expressões envolvendo valores numérico e string com o operador +, JavaScript converte valores numérico para strings.
  • Quando utilizamos o sinal de adição designando que o tipo do objeto é numérico, será feita a adição, de fato.

Acontece que todo valor que atribuirmos a um prompt será tratado como string. A conversão é feita automaticamente pelo JS em situações em que os operadores tem como sua única funcionalidade na linguagem os cálculos matemáticos, como o caso do cálculo do IMC, que é feito com os operadores de multiplicação ( * ) e divisão ( / ). Então, quando desejamos somar valores de forma matemática, é necessário fazer essa conversão de dados explícita, adicionando o comando Number().

Espero ter sanado sua dúvida! Estou a disposição.

Forte abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!