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 ?!
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 ?!
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..
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? :-)