Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
新手Javascript:剩余卡路里_Javascript_Function_If Statement - Fatal编程技术网

新手Javascript:剩余卡路里

新手Javascript:剩余卡路里,javascript,function,if-statement,Javascript,Function,If Statement,我现在是个新手,正在练习各种功能 我这样做是为了创建一个简单的剩余卡路里计算器,但我想问: 当我最初创建了一个值,该值已经计算出了卡路里男和卡路里日之间的差异,并将其命名为卡路里左(因此我字面上写了“让卡路里左=卡路里男-卡路里日”)但是它提出了NaN,这在某种程度上是可以理解的 但当我在alert()中这样做时,它明白我想要什么 (例如,“你有”+(卡路里男-卡路里日)+“今天还剩下消耗的卡路里!”) 你能告诉我为什么吗 您将如何制作此代码(更好/更干净) 我的代码和变量: let gen

我现在是个新手,正在练习各种功能

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

当我最初创建了一个值,该值已经计算出了卡路里男卡路里日之间的差异,并将其命名为卡路里左(因此我字面上写了“让卡路里左=卡路里男-卡路里日”)但是它提出了NaN,这在某种程度上是可以理解的

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

  • 你能告诉我为什么吗

  • 您将如何制作此代码(更好/更干净)

  • 我的代码和变量:

    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”,你的功能就会崩溃