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

[Dúvida] Porque nao precisou converter as string em number?

Olá, a minha dúvida na verdade é no curso antigo (JAVASCRIPT: PROGRAMANDO NA LINGUAGEM DA WEB), porém o forum esta fechado, então vim tirar a dúvida nesse tópico.

Gostaria de saber de o porque não precisar usar o Number ou o value para converter essas variáveis, já que os dados presentes nelas são string. Mesmo sem precisar converter, no console, aparece a soma corretamente. Pq isso acontece? Pq em alguns casos precisamos converter senão iria concatenar (no ex do codigo iria concatenar e ficar 100200, já que o peso do paciente é 100 e a altura é 2.0m), e em alguns casos não precisamos? Obs: O resultado correto da conta do imc é 25, e mesmo sem converter, aparece o valor 25 na soma da variavel IMC.

Ex do código abaixo:

let paciente = document.querySelector('#primeiro-paciente') let tdPeso = paciente.querySelector('.info-peso') let peso = tdPeso.innerHTML let tdAltura = paciente.querySelector('.info-altura') let altura = tdAltura.innerHTML let imc= peso / (altura*altura) // (aqui o peso do paciente é 100 e a altura é 2m.)

console.log(imc);

2 respostas
solução!

Isso se chama coerção no Javascript (coercion). Você está usando o operador de divisão. O Javascript é inteligente o suficiente para tentar converter automaticamente os valores para número, evitando erros. Esse comportamento depende de cada operador. Então, mesmo que você faça '100' / '4', o resultado será o número 25.

Os operadores no Javascript são essencialmente funções que recebem dois valores e retornam um único valor. Por baixo dos panos, essas funções tomam decisões em relação aos valores que passamos a elas. O operador de '+', por exemplo, tem um comportamento diferente. Se você passar '1' + '2', o resultado será a string '12' e '1' + 2, tbm vai retornar uma string '12' .

Olá Felipe, obrigada pela ajuda! Realmente, fiz um testes aqui e vi que somente na soma que o javascript concatena, esse exemplo. Obrigada!