Javascript 我的if/else条件没有按应有的方式显示

Javascript 我的if/else条件没有按应有的方式显示,javascript,Javascript,我目前正在学习Javascript,我从课程中脱离了脚本,只是利用我目前掌握的知识进行游戏 为了验证我是否理解控制流和函数参数,我决定制作一个集装箱码头日志。其想法是根据集装箱到达和停靠时间记录集装箱: 新集装箱是指停靠时间不到30分钟的集装箱 旧集装箱是指停靠时间至少为30分钟的集装箱 基于这些信息,我编写了以下代码: //集装箱类型:根据30分钟到达量,分为新旧两种。 const containerDocked=(集装箱,到达时间)=>{ newContainer=到达时间=30; i

我目前正在学习Javascript,我从课程中脱离了脚本,只是利用我目前掌握的知识进行游戏

为了验证我是否理解控制流和函数参数,我决定制作一个集装箱码头日志。其想法是根据集装箱到达和停靠时间记录集装箱:

  • 新集装箱是指停靠时间不到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-