Javascript新手:剩余卡路里

我是个新人,现在正在练习函数

我这样做是为了创建一个简单的剩余卡路里计算器,但我想问:

当我最初创建一个已经计算了calcalsMencalcalsToday之间的差异并将其命名为calcalsLeft 的值时(所以我字面意思是“让 calcalsLeft = calcalsMen - calcalsToday ”),但它得出了NaN,这在某种程度上是可以理解的。

但是当我在alert()中这样做时,它明白了我想要什么(例如“你有”+ (caloriesMen-caloriesToday) +“今天还剩下消耗的卡路里!”)

  1. 你能告诉我这是为什么吗?

  2. 您将如何编写这段代码(更好/更干净)?

我的代码和变量:

let gender;

let caloriesMen = 2500;

let caloriesWomen = 2000;

let caloriesToday;


function calCalc() {


gender = prompt('Are you man or woman?') 

    if (gender == 'man') {

        caloriesToday = prompt('How many calories have you already consumed today?');

        alert('You have ' + (caloriesMen - caloriesToday) + ' calories left to consume today!');

    } else if (gender == 'woman') {

        caloriesToday = prompt('How many calories have you already consumed today?');

        alert('You have ' + (caloriesWomen - caloriesToday) + ' calories left to consume today!');

    }

    

}


calCalc();

谢谢你!


慕森王
浏览 161回答 3
3回答

动漫人物

尝试定义caloriesToday为整数,let caloriesToday = 0;否则它的值将是undefined这样你不能从另一个数字中减去它

慕码人2483693

let gender;let caloriesMen = 2500;let caloriesWomen = 2000;let caloriesToday;let caloriesLeft;function calCalc() {gender = prompt('Are you man or woman?')     if (gender == 'man') {        caloriesToday = prompt('How many calories have you already consumed today?');        caloriesLeft = caloriesMen - caloriesToday;        alert('You have ' + caloriesLeft + ' calories left to consume today!');    } else if (gender == 'woman') {        caloriesToday = prompt('How many calories have you already consumed today?');        caloriesLeft = caloriesWomen - caloriesToday;        alert('You have ' + caloriesLeft + ' calories left to consume today!');    }    }calCalc();

慕桂英546537

您需要初始化变量以避免undefined值污染它所接触的所有内容。“更清晰的代码”是一个品味问题。我个人会避免使用带有不同性别键的对象的 if/else。如果没有必要,不要使用全局变量。在函数内定义变量效果很好。function calCalc() {    let gender = prompt('Are you man or woman?');    let caloriesPerGender = {'man': 2500, 'woman': 2000};    let caloriesToday = prompt('How many calories have you already consumed today?');    alert('You have ' + (caloriesPerGender[gender] - caloriesToday) + ' calories left to consume today!');}calCalc();您可能还想检查您的输入,如果有人在性别上输入“monkey”或在卡路里输入中输入“abc”,您的函数将会崩溃。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript