新手Javascript:剩余卡路里
我现在是个新手,正在练习各种功能 我这样做是为了创建一个简单的剩余卡路里计算器,但我想问: 当我最初创建了一个值,该值已经计算出了卡路里男和卡路里日之间的差异,并将其命名为卡路里左(因此我字面上写了“让卡路里左=卡路里男-卡路里日”)但是它提出了NaN,这在某种程度上是可以理解的 但当我在alert()中这样做时,它明白我想要什么 (例如,“你有”+(卡路里男-卡路里日)+“今天还剩下消耗的卡路里!”)新手Javascript:剩余卡路里,javascript,function,if-statement,Javascript,Function,If Statement,我现在是个新手,正在练习各种功能 我这样做是为了创建一个简单的剩余卡路里计算器,但我想问: 当我最初创建了一个值,该值已经计算出了卡路里男和卡路里日之间的差异,并将其命名为卡路里左(因此我字面上写了“让卡路里左=卡路里男-卡路里日”)但是它提出了NaN,这在某种程度上是可以理解的 但当我在alert()中这样做时,它明白我想要什么 (例如,“你有”+(卡路里男-卡路里日)+“今天还剩下消耗的卡路里!”) 你能告诉我为什么吗 您将如何制作此代码(更好/更干净) 我的代码和变量: let gen
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();
谢谢大家! 试着将
caloriestody
定义为一个整数,因此让caloriestody=0
否则它的值将是未定义的
,因此您不能从另一个数字中提取该值,正如Ben Coupe所述,您需要初始化变量以避免未定义的
值污染它所涉及的一切
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();
“清洁代码”是一个品味问题。我个人会使用带有不同性别钥匙的对象来避免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”,你的功能就会崩溃