Olá, Luiz, tudo bem?
Ótima pergunta e bem percebido! Vamos considerar o seguinte código:
var alturaInformada = prompt(nome + ", informe sua altura");
var pesoInformado = prompt(nome + ", informe seu peso");
var imc = calculaImc(alturaInformada, pesoInformado);
As variáveis alturaInformada
e pesoInformado
são realmente strings, porque é o que o comando prompt
retorna. Agora vamos considerar o código da função calculaImc
:
function calculaImc(altura, peso) {
return peso / (altura * altura);
}
Mesmo que nessa função os parâmetros altura
e peso
sejam strings, o javascript realiza nesse caso o que chamamos de Automatic Type Conversion (Conversão Automática de Tipo). Basicamente se o JS encontrar os operadores de subtração (-
), multiplicação (*
) ou divisão (/
) sendo realizados entre strings, ele tentará convertê-las para números e realizar as operações matemáticas normalmente, e por isso o código acima funciona.
Mas e o operador +
? Bom, você deve tomar mais cuidado ao utilizá-lo, pois além de funcionar como operador de soma, ele também funciona como operador de concatenação. Então se você tentar "somar" duas strings, o JS simplesmente irá juntá-las em uma string só, em vez de convertê-las para números e somá-los.
Você pode ler mais sobre conversão de tipo nesse artigo da W3Schools. Há uma seção que fala sobre Automatic Type Conversion.
Espero ter ajudado! Qualquer dúvida estaremos aqui para te auxiliar. Bons estudos! :)