Olá Ataize, tudo bem?
A função prompt
sempre retorna uma string
, ou seja, texto. Todo texto em JS é representado por aspas: "texto"
. Todo número não tem essas aspas 123
.
Porém a linguagem JavaScript ela tem uma espécie de mecanismo de conversão automática, onde ela entende que se temos um texto multiplicado por outro, pode ser que aquele texto seja um número e não um texto, logo ela converte o texto para número automaticamente e depois tenta fazer a conta.
Por exemplo:
Se usando a linguagem calculamos 5 * 10, o resultado é 50.
Se usando a linguagem calculamos 5 / 10, o resultado é 0.5.
Até aqui sem problemas porque é número vezes número e número dividido por número.
Porém, aqui começa a ficar interessante:
Se usando a linguagem calculamos "5" * 10, o resultado é 50.
Se usando a linguagem calculamos "5" / 10, o resultado é 50.
Observe que 5 está entre aspas porque é um texto. Ele consegue fazer a conta porque ele usa esse mecanismo de conversão automática.
Porém, se somamos um texto + número, ele entende que tudo é texto, logo ele não faz o cálculo, ele concatena.
Se usando a linguagem calculamos "5" + 10, o resultado é 510.
Quando na função calculaImc
passamos um texto, ele converte automaticamente para número porque a função só tem divisão e multiplicação.
function calculaImc(altura, peso) {
return peso / (altura * altura);
}
Se essa função tivesse alguma soma dentro dela, por exemplo, altura + altura
ele iria concatenar os números. Porém como só tem multiplicação e divisão, ele entende que precisa converter de string para número. De "5"
para 5
por exemplo.
Depois me fala se conseguiu ficar mais claro. Forte abraço!