Javascript 我应该如何处理嵌套的条件语句?

Javascript 我应该如何处理嵌套的条件语句?,javascript,if-statement,Javascript,If Statement,我有一系列嵌套的条件检查,我试图找到一个干净的解决方案,尽可能避免if{}else{}hell。请参阅示例代码,以演示我试图实现的目标 总之,我有两个对象,CACHE\u FILE\u AGE\u LIMIT和CACHE\u FILE\u CURRENT\u AGE,我正在尝试进行嵌套的年龄检查: first check the days, then check hours, then check minutes, then check seconds

我有一系列嵌套的条件检查,我试图找到一个干净的解决方案,尽可能避免
if{}else{}
hell。请参阅示例代码,以演示我试图实现的目标

总之,我有两个对象,
CACHE\u FILE\u AGE\u LIMIT
CACHE\u FILE\u CURRENT\u AGE
,我正在尝试进行嵌套的年龄检查:

first check the days,
    then check hours,
       then check minutes,
           then check seconds
我们的想法是,当我们达到一个更大的值时,例如,天数相等,然后我们继续到小时,如果我们在那里发现一个更大的小时值,我们就结束检查

有关更多信息,请参见示例

const CACHE\u FILE\u AGE\u LIMIT={
天数:3,
时间:6时,
分钟:15,
秒:57
}
常量缓存文件当前时间={
天数:3,
时间:5,,
会议记录:14,
秒:57
}
功能时间差(ageObj1、ageObj2){
log('days_limit',ageObj1.days',?','days_age',ageObj2.days);
//旧日
document.getElementById(“当前天数”).innerHTML=ageObj2.days;
如果(ageObj1.days',i)
设id=limit_fields[i].id.split(“”)[1];
let val=缓存\文件\使用期限\限制[id]
//log('\tid:',id',val:',val);
限制字段[i].innerHTML=val;
}
//评估年龄
document.getElementById(“output”).innerHTML=timeDiff(缓存文件期限限制、缓存文件期限)?“旧的”:“最新的”
.tg{
边界塌陷:塌陷;
边界间距:0;
}
.tg td{
字体系列:Arial,无衬线;
字体大小:12px;
填充:10px 5px;
边框样式:实心;
边框宽度:1px;
溢出:隐藏;
断字:正常;
边框颜色:黑色;
}
.tg th{
字体系列:Arial,无衬线;
字体大小:12px;
字体大小:正常;
填充:10px 5px;
边框样式:实心;
边框宽度:2倍;
溢出:隐藏;
边框颜色:黑色;
}
.tg.值{
颜色:蓝色;
文本对齐:居中;
垂直对齐:顶部;
}
.tg.电流{
颜色:蓝色;
文本对齐:居中;
垂直对齐:顶部;
}
.tg.current.red{
颜色:红色;
}
.tg.current.blue{
颜色:蓝色;
}
.tg.极限{
颜色:#85929E;
文本对齐:居中;
垂直对齐:顶部;
}
.tg.标题{
背景色:#ffffc7;
文本对齐:居中;
垂直对齐:顶部;
}
.tg.项目{
背景色:#ffffc7;
字体:斜体;
文本对齐:右对齐;
垂直对齐:顶部;
}
.tg.空{
背景色:#9b9b9b;
文本对齐:右对齐;
垂直对齐:顶部;
}
.tg.结果{
字体大小:粗体;
字体:斜体;
背景色:#ffce93;
文本对齐:右对齐;
垂直对齐:顶部;
}
.tg.输出{
背景色:#FDEBD0;
文本对齐:居中;
垂直对齐:顶部;
}

现在的
限制
天
-
小时
-
分钟
-
秒
-
后果
最新的

将嵌套条件转换为代码线性表示的唯一方法是将单个条件的粒子移动到函数中,并使用
某些
进行短路退出运行。当您需要返回一个值时,您需要存储该标志,因为
some
的返回值对此不起作用

这种方法的优点是添加或多或少的无限条件,根据需要打断它们,并返回布尔值以进行进一步的操作

缺点是,您需要查找数据、嵌套结构,并了解下一个条件