如何优化嵌套if?
Posted
技术标签:
【中文标题】如何优化嵌套if?【英文标题】:How to optimize nested if? 【发布时间】:2016-04-10 11:56:23 【问题描述】:您好,我想知道有没有更好的方法来做到这一点? condition_a 比 b 更重要,b 比 c 更重要,等等。
var slot = condition_a
if (!slot)
slot = condition_b
if (!slot)
slot = condition_c
if (!slot)
slot = condition_d
if (!slot)
slot = condition_e
if (slot)
//do something
【问题讨论】:
没有更好的方法了。无论你做什么都是正确的方式。 不,我 25 岁。只是学习一个爱好。 @JaydipJadhav - 有 3 个答案更简洁,而且,如果您了解 javascript,即使是中级编码人员也更易读 ***.com/questions/2922948/… 可能重复?关于该问题的链接文章对条件性能进行了相当好的(但可能已过时)细分。 【参考方案1】:你做一个OR:
if (condition_a || condition_b || condition_c || condition_d || condition_e)
// do something
这相当于您的代码。如果条件评估为true
,则不检查以下条件(称为short circuit evaluation)。它可以进行这样的检查:
if (a===null || a.b===0)
请注意,在同一个地方有这么多条件看起来像是代码异味:可能有些东西在语义上设计得不够充分。
【讨论】:
不知道为什么这会被否决,这似乎是一个完全有效的答案。 我没有投反对票,但我认为他想要if (!condition_a || !condition_b || ... !condition_e)
@JaromandaX 再次阅读 OP,他正在检查 slot
而不是 slot
本身的否定。
@gurvinder372 - 复习你的逻辑
@gurvinder372 他正在检查槽的负数只是为了看看是否需要检查另一个条件【参考方案2】:
您也可以像这样使用||
条件,
slot = condition_a||condition_b||condition_c||condition_d;
例如Fiddle
【讨论】:
【参考方案3】:如果您需要 slot
有一个值(而不仅仅是使用它来测试最后的条件)
var slot = condition_a || condition_b || condition_c || condition_d || condition_e;
if (slot)
// do soemthing
【讨论】:
你没有看到之前相同的答案吗? @DenysSéguret - 不,请告诉我之前的相同答案,您就有机会赢得大奖 @Jaromanda X 是的,谢谢,我就是这样做的。 var slot = (a || b || c); if(slot) slot.dosomething() ;以上是关于如何优化嵌套if?的主要内容,如果未能解决你的问题,请参考以下文章
一万个if..........else....语句,请问如何去优化它。。。。以提升性能效率
如何使用 JOINS 和嵌套 SELECT 优化此 SQL 查询?