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

duvida no prompt

Não estou entendendo a diferença do prompt pro parceInt(prompt..

porque quanod fiz o imc ele pegou como numero e quando fiz\ como pontos do jogo ele nao pegou ?!

3 respostas

Oi, Augusto

Se entendi direito sua dúvida, a diferença é que prompt(...) te devolve um texto, uma string. Então você não consegue fazer contas com ele. Por exemplo, o código abaixo não vai ter o resultado esperado:

var numero = prompt("Digite um número");
numero * 2; // não vai conseguir fazer a multiplicação

Quando fazemos parseInt(prompt(...)), estamos convertendo esse texto devolvido pelo prompt para um número. Então se alterarmos o código acima para usar essa forma, vai dar certo:

var numero = parseInt(prompt("Digite um número"));
numero * 2; // calcula o dobro do numero corretamente

Era essa sua dúvida? Consegui esclarecer?

mais ou menos, pq isto eu ja tinha entendido, oq nao estou entendendo e que por exemplo pra calcular imc ele usou apenas prompt e conseguiu fazer a conta do peso/altura² mas pra ver a pontuação dotime nao deu, e agora ele perguntou o ano que começou a copa com parseInt e em que ano terminava apenas com prompt e novamente deu certo ! nao consigo entender..

solução!

Oi Augusto,

esse problema é por causa de uma gentileza que o Javascript nos faz (e outras linguagens não): ele tenta adivinhar o tipo da variável que esperamos e convertê-lo de acordo. É uma funcionalidade meio bizarra, na verdade. Vamos de um exemplo:

var diasDaSemana = "7";

Isso é, claramente, uma String (texto). Mas se você fizer uma conta com ela, por exemplo, o javascript chuta que é pra converter a variável pra número:

var resultado = diasDaSemana - 3;
document.write(resultado);

Esse código mostra na tela o número 4. O mesmo valeria pra multiplicação e divisão, já que só dá pra fazer essas operações com números. O problema mesmo é com o +.

Se estivermos trabalhando com números, ele considera que é soma:

var numero = 2;
var outroNumero = 4;
document.write(numero + outroNumero); //mostra 6

Mas se estivermos trabalhando com Strings, ele considera que é concatenação (grudar textos, uns nos outros):

var texto = "2";
var outroNumero = 4;
document.write(texto + outroNumero); //mostra 24

Ele mostra 24 porque é a concatenação "2" com 4, em vez de a soma.

Pense assim, sem fazer conversão nenhuma, o javascript sabe que o conteúdo da variável é uma String. Como existe a operação + pra String, não tem porquê ele converter. Então a variável se comporta como texto, mesmo.

Fez sentido, agora? :-)