2016-01-06 82 views
0

嗨,我想知道有沒有更好的方法來做到這一點? condition_a比B更重要,B是比C更重要的是,等如何優化嵌套if?

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 
} 
+0

這就是HomeWork? – CoderPi

+0

沒有比這更好的方法了。無論你做什麼都是正確的方式。 –

+0

不,我25歲。剛剛學習愛好。 – lock

回答

-1

,如果你需要slot有一個值(而不是僅僅用它來測試在最後的條件)

var slot = condition_a || condition_b || condition_c || condition_d || condition_e; 
if (slot) { 
    // do soemthing 
} 
+0

你沒有看到以前的相同答案嗎? –

+0

@DenysSéguret - 不,請給我一個以前的**相同的**答案,爲您贏得大獎的機會 –

+0

@Jaromanda X是的,謝謝這是我做的確切方式。 var slot =(a || b || c); if(slot){slot.dosomething()}; – lock

3

你做一個OR

if (condition_a || condition_b || condition_c || condition_d || condition_e) { 
     // do something 
} 

這相當於你的代碼。如果條件評估爲true,則不檢查以下條件(它被稱爲short circuit evaluation)。這使得它可能有檢查這樣的:

if (a===null || a.b===0) { 

要小心,在同一個地方這麼多的條件看起來像一個代碼味道:有可能是一些還沒有被設計語義不夠。

+0

有沒有需要downvote也沒有upvote在我看來... –

+0

不知道爲什麼這得到downvote,這似乎是一個完全有效的答案。 –

+0

我沒有downvoted,但我認爲他希望'if(!condition_a ||!condition_b || ...!condition_e)' – gurvinder372

0

您可以使用||條件這樣也,

slot = condition_a||condition_b||condition_c||condition_d; 

Fiddle