2015-04-01 53 views
0

右鍵,所以我遇到了很多我已閱讀的代碼,並且我理解JavaScript中條件運算符的功能角色;我不明白的是當一個應該使用它。什麼時候應該使用JavaScript條件運算符?

我已經閱讀了ECMAScript Specification 5.1,但它並沒有幫助我決定何時實施它。

例如,我可以很容易地看到替代代碼的好處:

if (isTrue == true) { 
    doSomething(); 
} 
else { 
    doSomethingElse(); 
} 

隨着未來:

isTrue ? doSomething() : doSomethingElse() 

當我倒下時要麼如果裏面的代碼.. 。else ...語句冗長,或者條件運算符嵌套在(an)其他條件運算符中。決定何時使用哪個版本的條件語句的明顯候選者是「用條件運算符替換它,使代碼更容易遵循?」。不幸的是,我對編寫代碼並不熟悉,而且我不確定這是什麼時候,而且我很偏向於理解自己的代碼,無論它寫得多麼糟糕。

任何人都可以有比我更多的經驗給我一個稍微不太主觀的測試,當你使用時,我可以試着效仿嗎?

相關:JS How to use the ?: (ternary) operator

+4

你*可以*使用它的語句,但我會留給那些縮小。我只在表達式中使用它。 – 2015-04-01 16:38:38

+2

除了「使用使您的代碼最清晰,最清晰,最容易理解和維護的編碼技術」之外,實際上並沒有更多。有時候,三元操作符會使事情變得更清潔,有時候會讓事情變得更難以閱讀。成爲更有經驗的程序員的一部分是認識到代碼不清晰時,通過使用不同的技術並在首次編寫代碼時知道選擇哪種技術來改進代碼。 – jfriend00 2015-04-01 17:07:30

回答

2

三元運營商的目的是要取代

if (test) { 
i = something(); 
} else { 
i = somethingElse(); 
} 

i = test?something():somethingElse(); 

你不能把它看作一個if-then-else的快捷方式,但真正作爲條件表達式(不是條件指令)。

3

我認爲這是在歸屬代碼的可讀性和簡單實用。哪一個更容易閱讀? :)

var numberType = (number % 2 == 0) ? "even" : "odd"; 

// or 

var numberType; 
if (number % 2 == 0) { 
    numberType = "even"; 
} else { 
    numberType = "odd"; 
} 
+2

或var isResultCorrect =(my_output == desired_output);' – ps2goat 2015-04-01 16:41:16

+0

好的,如果你是那個迂腐者,請考慮另一個例子,如'var numberType =(number%2 == 0)? 「偶」:「奇」;'。 – 2015-04-01 16:42:27

+0

「偶數」:「奇怪」的例子比你在答案中的好得多。我建議你編輯你的答案,以取代你的偶數/奇數的例子。 – jfriend00 2015-04-01 16:44:34

相關問題