首页 > 解决方案 > 这个函数和条件语句输出有什么问题?

问题描述

我正在阅读一系列关于 JavaScript 的教程。其中一个让我在 JS 中构建一个 BMI 计算器,同时检查我的结果。它还提供了解决方案并进行了解释。就是这样:

function bmiCalculator(weight, height) {
    var bmi = Math.round(weight / Math.pow(height, 2));
    console.log("Your BMI is " + bmi);
    return bmi;
}

var bmi = bmiCalculator(65, 1.8);
console.log(bmi);

这个想法是,如果我将值弹出到 bmiCalculator 的 var = bmi 行中,以在控制台中获得输出。它给了我 65 和 1.8 的尝试,告诉我我的输出应该是 20。好吧,它起作用了(万岁),我(想?)我了解那里发生了什么。

随后的一项任务要求我对其进行修改,使其包含条件语句并根据计算出的 BMI 输出一种“您体重不足/正常/超重”的消息。它给出了以下的起始代码块:

function bmiCalculator (weight, height) {
    return interpretation;
}

问题是这节课没有后续。没有解决方案(或解释)。有一个“检查代码”选项,但它只是返回错误,我不确定出了什么问题。

我想出了这个代码块:

function bmiCalculator(weight, height) {
    var bmi = Math.round(weight / Math.pow(height, 2));
    return interpretation;
}

var interpretation = bmiCalculator(65, 1.8);

if (bmi <= 18.5) {
    alert("Your BMI is " + bmi + " so you are underweight.");
}
if (bmi > 18.5 && bmi <= 24.9) {
    alert("Your BMI is " + bmi + " so you have a normal weight.");
}
if (bmi > 24.9) {
    alert("Your BMI is " + bmi + " so you are overweight.");
}

它没有给我使用的起始值,所以我只使用了前面示例中的 65 和 1.8。但它返回给我的错误包括:

Your solution is incorrect
bmiCalculator() should return underweight for 6, 2

Expected undefined to equal 'Your BMI is 15, so you are underweight.'.

好吧,如果我将 6,2 放入该计算中,我不会得到 15,我会得到 2(我通过原始 bmiCalculator 函数运行它作为测试。所以这对我来说没有意义。此外,还有给我的消息旁边的另一个注释:

ReferenceError: Can't find variable: bmi

不过,我认为我在函数中定义了 bmi 。是否应该以不同的方式定义?

无论如何,我想得到这个任务的解决方案,因为没有提供,所以我可以在继续之前理解我做错了什么。谁能告诉我正确的解决方案,以及我做错了什么,以便我从中学习?

标签: javascriptfunctionconditional-statements

解决方案


您只是与变量混合,应该是:

function bmiCalculator(weight, height) {
    var interpretation = Math.round(weight / Math.pow(height, 2));
    return interpretation;
}

var bmi = bmiCalculator(65, 1.8);

if (bmi <= 18.5) {
    alert("Your BMI is " + bmi + " so you are underweight.");
}
if (bmi > 18.5 && bmi <= 24.9) {
    alert("Your BMI is " + bmi + " so you have a normal weight.");
}
if (bmi > 24.9) {
    alert("Your BMI is " + bmi + " so you are overweight.");
}

推荐阅读