Javascript 我的if/else条件没有按应有的方式显示
我目前正在学习Javascript,我从课程中脱离了脚本,只是利用我目前掌握的知识进行游戏 为了验证我是否理解控制流和函数参数,我决定制作一个集装箱码头日志。其想法是根据集装箱到达和停靠时间记录集装箱:Javascript 我的if/else条件没有按应有的方式显示,javascript,Javascript,我目前正在学习Javascript,我从课程中脱离了脚本,只是利用我目前掌握的知识进行游戏 为了验证我是否理解控制流和函数参数,我决定制作一个集装箱码头日志。其想法是根据集装箱到达和停靠时间记录集装箱: 新集装箱是指停靠时间不到30分钟的集装箱 旧集装箱是指停靠时间至少为30分钟的集装箱 基于这些信息,我编写了以下代码: //集装箱类型:根据30分钟到达量,分为新旧两种。 const containerDocked=(集装箱,到达时间)=>{ newContainer=到达时间=30; i
- 新集装箱是指停靠时间不到30分钟的集装箱
- 旧集装箱是指停靠时间至少为30分钟的集装箱
//集装箱类型:根据30分钟到达量,分为新旧两种。
const containerDocked=(集装箱,到达时间)=>{
newContainer=到达时间<30;
oldContainer=到达时间>=30;
if(新容器){
log('newcontainer:'+Container+'刚刚到达'+到达时间+'分钟前');
}
else if(旧容器){
log('停靠的容器:'+Container+'已停靠'+arrivalTime+'min.');
}
else if(container==false&&arrivalTime==true){
log('数分钟前到达'+arrivalTime+'的容器尚未被记录!!!');
}
else if(container==true&&arrivalTime==false){
console.log('Container:'+Container+'尚未被记录!!!');
}
否则{
log('容器尚未被记录!!!!');
}
};
集装箱码头('John',24);
集装箱码头('Elizabeth',57);
集装箱码头('Harry',30);
集装箱(“迈克”)代码>这是修复方法
容器===true
和到达时间===true
//集装箱类型:根据30分钟到达量,分为新旧两种。
const containerDocked=(集装箱,到达时间)=>{
newContainer=到达时间<30;
oldContainer=到达时间>=30;
if(新容器){
log('newcontainer:'+Container+'刚刚到达'+到达时间+'分钟前');
}
else if(旧容器){
log('停靠的容器:'+Container+'已停靠'+arrivalTime+'min.');
}
else if(!container&&arrivalTime){
log('数分钟前到达'+arrivalTime+'的容器尚未被记录!!!');
}
else if(集装箱到达时间){
console.log('Container:'+Container+'尚未被记录!!!');
}
否则{
log('容器尚未被记录!!!!');
}
};
集装箱码头('John',24);
集装箱码头('Elizabeth',57);
集装箱码头('Harry',30);
集装箱(“迈克”)代码>您必须检查else if语句中的到达时间是否为空
//集装箱类型:根据30分钟到达量,分为新旧两种。
const containerDocked=(集装箱,到达时间)=>{
newContainer=到达时间<30;
oldContainer=到达时间>=30;
if(新容器){
log('newcontainer:'+Container+'刚刚到达'+到达时间+'分钟前');
}
else if(旧容器){
log('停靠的容器:'+Container+'已停靠'+arrivalTime+'min.');
}
else if(container==false&&arrivalTime==true){
log('数分钟前到达'+arrivalTime+'的容器尚未被记录!!!');
}
else if(容器!=null&&!到达时间){
console.log('Container:'+Container+'尚未被记录!!!');
}
否则{
log('容器尚未被记录!!!!');
}
};
集装箱码头('John',24);
集装箱码头('Elizabeth',57);
集装箱码头('Harry',30);
集装箱(“迈克”)
我相信Mike没有登录,因为您在调用containerDocked
时没有指定到达时间。这意味着arrivalTime
是未定义的
,所有这些条件返回false
,执行else
块
注意arrivalTime===false
在containerDocked('Mike')中是false
,到达时间
未定义,且undefined>或<30将始终返回false。您希望调用哪个if/else
块?您正在测试可以未定义的值的true/false。这对你的情况不起作用。虽然张贴的答案会/可能会起作用,但它们可能并不反映你真正想要测试的内容。如果container===true&&arrivalTime==false
应该测试您是否仅使用一个参数调用函数,那么使用常规(非箭头)函数和arguments.length
到传递多少个参数可能是更好、更详细的解决方案。最后两个else if
应该是什么样子,取决于您到底想测试什么
,到达时间是未定义的
而不是空的
。同意,让我来编辑它。虽然这也可以正常工作。如果arrivalTime
是未定义的
,那么arrivalTime==false
和arrivalTime==false
都是false
@marioCurrent取决于测试的确切内容。它很可能会起作用,但由于OP想要测试什么并不清楚,因此不一定是正确的检查。(例如,如果OP想要测试一个或多个参数是否通过,那么这将是错误的测试)@t.niese-你能详细说明案例何时会失败吗?@nikhlagw我没有说它会失败。我只是说,在OPs问题中,不清楚给定代码是否进行了“正确”检查。因此,如果只有在使用一个参数调用containerDocked
时才应输入container===true&&arrivalTime==false,那么您的解决方案将失败,因为container&!到达时间
也会被称为containerDocked('Mike',undefined)
,但正如我所说的,不清楚是否应该如此。@t.niese-