Hola, no sé si ya hayas solucionado tu problema, pero espero mi código pueda ser de utilidad.
Primero, analicemos tu código:
return peso / (altura * altura);
}
Aqui en este caso, me genera confusión, no sé si copiaste mal o solamente una parte de la función calculodeImc, pero te puedo recomendar que no utilices return directamente a una formula, ya que puedes tener errores, es mejor tener una variable y retornar solamente esa variable, por ejemplo:
function calculoDeImc (peso, altura) { //Obtenemos peso y altura al preguntar al usuario
var imc = peso / (altura * altura); //Creamos una variable nueva, la llamamos imc (puede ser otro nombre, calculo, total, resultado, etc)
return imc; //retornamos imc, este resultado va a ir a una variable AFUERA de la funcion calculoDeImc
}
Un consejo aquí, es mejor usar el estilo camel (camello) para el nombre de variables o funciones, ya que facilita la lectura de variables y se evitan confusiones, este estilo funciona usando una mayúscula por cada palabra de una variable, sin contar la del inicio por ejemplo, numeroDeNiños, nombreDelAnimal, afirmacionDelProgreso, etc.
Ahora continuando, el return va a llegar a la variable imcCalculado, ya que es mejor que directamente usar la funcion sobre otras instrucciones.
var imcCalculado = calculoDeImc (peso, altura); // <-- ahora imcCalculado tendrá el valor que nos retornó la función.
Ahora podemos utilizar esta variable para multiples propositos, desde concatenarlo en una frase para saber cual es el IMC que obtuvimos, o para usar las condiciones if statement para que hagan instrucciones especificas.
imprimir( nombre + ", tu IMC calculado es: " + imcCalculado); //recuerda que "nombre" es una variable que se concatena y tambien "imcCalculado", además de que usamos la función imprimir para poder proyectar lo que hacemos en el navegador.
if (imcCalculado < 18.5) { //La condición del if es que la variable imcCalculado debe ser menor a 18.5
imprimir("IMC abajo de lo recomendado"); // <-- Esta instruccion solo se imprimirá SI la variable imcCalculado es menor a 18.5
}
Ahora, puede que hayas hecho un error con lo explicado anteriormente, que es el no utilizar una variable en la función y solo retornar esa variable (en este caso es imc de la función calculodeImc, ya que al aplicarlo en el if, lo que haces es solamente poner la función, pero no es una condición, porque no le has puesto datos y por lo tanto dará error ( recomiendo hacer lo que expliqué previamente).
if (calculodeImc < 18.5 ){ // <-- Tendremos un error porque usamos calculodeImc como variable, pero es una función (y no hay datos para el calculo)
texto("IMC debajo de lo recomendado"); //por lo tanto no hará esta instrucción
}
if ( calculodeImc > 30) { <-- Tendremos un error porque usamos calculodeImc como variable, pero es una función (y no hay datos para el calculo)
texto("IMC considerado como obesidad "); //por lo tanto no hará esta instrucción
}
Ya explicado el posible problema, así quedaría el programa:
<script>
function saltarLinea() { //funcion necesaria para saltos de linea
document.write("<br>");
document.write("<br>");
}
function imprimir(frase) { //función que imprime lo que escribimos en pantalla
document.write(frase);
saltarLinea(); //llamada de la función saltarLinea
}
function calcularIMC (peso, altura) { //función para el calculo del IMC
var imc = peso / (altura * altura); //usamos variables para minimizar errores
return imc; //retornamos variable
}
var nombre = prompt("Informe su nombre: ");
var pesoInformado = prompt(nombre + ", informe su peso: ");
var alturaInformado = prompt(nombre + ", informe su altura: ");
var imcCalculado = calcularIMC(pesoInformado,alturaInformado); //imcCalculado obtiene el valor de la funcion calcularIMC
imprimir(nombre + ", tu IMC calculado es: " + imcCalculado);
if(imcCalculado < 18.5){
imprimir("IMC abajo de lo recomendado");
}
if(imcCalculado >= 30){
imprimir("IMC considerado como obesidad");
}
</script>