javascript - 调用函数时未定义,但并非每次调用都发生
问题描述
我正在使用 codecademy 来学习 JS,并且通过这个函数调用我得到了间歇性的结果。在某些情况下,它会正确显示,但如果我继续重新运行程序,它将在调用的日子里输出 undefined。我究竟做错了什么?
詹姆斯的活动是:一场5K
詹姆斯的训练时间是:未定义的天数
克娄巴特拉的活动是:骑自行车
克娄巴特拉的训练时间是:40天
Frederick 的活动是:5K
Frederick 的训练时间是:未定义的天数
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);
解决方案
您获取事件的函数将返回a 5K
,random === 0
但会getTrainingDays
检查event === 5K
.
修复您的脚本以检查 event 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;
}
推荐阅读
- javascript - 使用 Ajax 和 PHP 将文件上传到数据库
- django - 基于 Django 类的视图,传递参数
- python - 读取大型文本文件时数据类型错误
- android - 使用服务上下文添加侦听器以上传文件
- html - 如何在 HTML 电子邮件中的锚标记旁边添加图标?
- python - 在多维列表索引中使用 splat 运算符
- c# - 使用 IgnoreQueryFilter 加载相关数据
- java - Java泛型:通配符扩展类并包含该类
- java - 如何将 C# DateTime 转换为 Java DateTime
- java - Spring Boot Kotlin API 为所有端点返回 404 响应