2016-09-06 32 views
4

我可以使用三元條件運算符的if {} else {}這樣的語句:a ? x : yquestion ? answer1 : answer2三元條件運算符的其他如果

是否可以將此格式與else if子句一起使用?例如。是這樣的:

a ? b ? x : y : z

......或者這只是矯枉過正?

回答

6

xya ? x : y都是完整的表達式,所以只要它們產生正確類型的結果,您就可以將任何類型的子表達式放入它們中。

然而,條件表達式的嵌套很快變得難以管理,所以使用括號是一個非常不錯的主意:

let res = a ? (b ? x : y) : z 

let res = a ? x : (b ? y : z) 

或在最後甚至

let res = a ? (b ? w : x) : (c ? y : z) 
+2

笑'讓res ='。我認爲在這一點上,「else if」的可讀性勝過操作符的簡潔:) – chicobermuda

+0

@chicobermuda我同意 - 因此「甚至」取代簡單的「或」。如果你發現自己需要寫一些與最後一個表達式一樣複雜的東西,你可能會更好地使用'if' /'else'或者在某些情況下,'switch'。 – dasblinkenlight