在调用函数时获取未定义但在每次调用时都不会发生

问题描述 投票:0回答:1

我正在使用codecademy来学习JS,并且我通过此函数调用得到间歇性结果。在某些情况下,它会正确显示,但如果我继续重新运行程序,它将在所调用的日期输出undefined。我究竟做错了什么?

詹姆斯的活动是:5K

詹姆斯的训练时间是:未定义的日子

Cleopatra的活动是:骑自行车

Cleopatra的培训时间为:40天

弗雷德里克的活动是:5K

弗雷德里克的训练时间是:未定义的日子

const getRandomEvent = () => {
let random = Math.floor(Math.random() * 3)

if(random === 0){
    return "a 5K"
}
else if(random === 1){
    return "Cycling"
}
else if(random === 2)
   return "Marathon"
}

const getTrainingDays = event =>{
let days;

if(event === "5K"){
    days = 60;
}
else if(event === "Cycling"){
    days = 40;
}
else if(event === "Marathon"){
    days = 250;
}

return days;
}

const event = getRandomEvent();
const days = getTrainingDays(event);

const event2 = getRandomEvent();
const days2 = getTrainingDays(event2);

const event3 = getRandomEvent();
const days3 = getTrainingDays(event3);

const logEvent = (name, event) => console.log(`${name}'s event is: ${event}`);
const logTime = (name, days) => console.log(`${name}'s training time is: ${days} days`);

logEvent("James", event);
logTime("James", days);

logEvent("Cleopatra", event2);
logTime("Cleopatra", days2);

logEvent("Frederick", event3);
logTime("Frederick", days3);
javascript
1个回答
0
投票

你获得该事件的功能将返回a 5Krandom === 0,但getTrainingDays检查event === 5K

修复脚本以检查事件a 5K

您还应该在适当的位置包含catch all else语句。

考虑以下内容:

const getRandomEvent = () => {
    let random = Math.floor(Math.random() * 3);
    if (random === 0) { 
        return "a 5K"
    } else if (random === 1) {
        return "Cycling"
    } else if(random === 2) { 
        return "Marathon"
    }
}

const getTrainingDays = event => {
    let days; 
    if (event === "a 5K") { 
        days = 60; 
    } else if (event === "Cycling") {
        days = 40; 
    } else if (event === "Marathon") {
        days = 250;
    } else {
        days = -1;
    }
    return days;
}
© www.soinside.com 2019 - 2024. All rights reserved.