为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript新手:剩余卡路里

Javascript新手:剩余卡路里

慕森王 2023-07-14 10:23:15
我是个新人,现在正在练习函数我这样做是为了创建一个简单的剩余卡路里计算器,但我想问:当我最初创建一个已经计算了calcalsMen和calcalsToday之间的差异并将其命名为calcalsLeft 的值时(所以我字面意思是“让 calcalsLeft = calcalsMen - calcalsToday ”),但它得出了NaN,这在某种程度上是可以理解的。但是当我在alert()中这样做时,它明白了我想要什么(例如“你有”+ (caloriesMen-caloriesToday) +“今天还剩下消耗的卡路里!”)你能告诉我这是为什么吗?您将如何编写这段代码(更好/更干净)?我的代码和变量: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();谢谢你!
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

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



查看完整回答
反对 回复 2023-07-14
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

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();


查看完整回答
反对 回复 2023-07-14
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您需要初始化变量以避免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”,您的函数将会崩溃。


查看完整回答
反对 回复 2023-07-14
  • 3 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信