Não li todas as mensagens porque são muitas, mas acho que entendi os problemas. Aqui vão algumas dicas e possíveis correções:
- A função
toFixed( )
retorna uma string, o que faria uma variável que você esperava ser um valor numérico armazenar na realidade uma string, que consequentemente faria ser impossível fazer operações com a variável. Para converter o resultado para valor numérico novamente, é só inserir um sinal de adição antes do uso da função. - O nome dos parâmetros não precisam ser os mesmos dos argumentos, na verdade é bom eles serem diferentes porque o identificador (nome) do parâmetro deve deixar claro o que ele vai receber, e o nome do argumento deve identificar o que ele é.
- Quando você declara uma variável dentro de uma função, ela só é visível/existe no escopo daquela função, o que significa que ela não poderá ser usada em outras funções ou linhas do código. Para variáveis que serão usadas por outras funções ou em outras partes do código, elas devem ser globais, ou seja, declaradas fora de funções, em linhas do arquivo do código. No seu código por exemplo, a variável
resultado
deveria ter sido declarada fora da função calculoIMC( )
já que ela também é usada na função verificarIMC( )
.
Seguindo o seu código, acho que ele poderia estar assim:
let peso = Number(prompt("Digite seu peso em kilogramas:")),
altura = Number(prompt("Digite sua altura em metros:")),
resultado = calculoIMC(peso, altura);
function calculoIMC(pesoKg, alturaMetros) {
return +(pesoKg / (alturaMetros * alturaMetros)).toFixed(2);
}
function verificarIMC(resultadoIMC) {
if (resultadoIMC >= 18.5 && resultadoIMC <= 24.9) {
alert(`Seu IMC: é ${resultadoIMC}. De acordo com a Organização Mundial da Saúde, seu IMC é considerado normal para sua altura. `);
} else {
alert(`Seu IMC: é ${resultadoIMC}. De acordo com a Organização Mundial da Saúde, seu IMC está acima do recomendado para sua altura. `);
}
}
verificarIMC(resultado);
Caso você queira um código mais enxuto, poderia ter feito assim:
let peso = Number(prompt("Digite seu peso em kilogramas:")),
altura = Number(prompt("Digite sua altura em metros:")),
resultado = calculoIMC(peso, altura);
function calculoIMC(pesoKg, alturaMetros) {
return +(pesoKg / alturaMetros ** 2).toFixed(2);
}
alert(`Seu IMC: é ${resultado}. De acordo com a Organização Mundial da Saúde, seu IMC ${resultado >= 18.5 && resultado <= 24.9 ? "é considerado normal para sua altura" : "está acima do recomendado para sua altura"}.`);
- A função
Number( )
basicamente converte valores de outros tipos (por exemplo boolean ou string) para valor numérico. - Só uma curiosidade rápida que eu acho muito estranho mas doido ao mesmo tempo: dá pra usar a chamada de uma função como argumento para outra, contando que ela retorne algum valor, por exemplo no seu código é possível fazer isso:
verificarIMC(calculoIMC(peso, altura));