2017-05-24 93 views
1

我試圖寫一個很長的if else如果嵌套三元運營商

(!contract.hasOwnProperty('COMMIT_CONTRACT') ? '1') : (contract.hasOwnProperty('COMMIT_CONTRACT') ? '2' : '3') 

然而,這無法評估。

我開始:

(!contract.hasOwnProperty('COMMIT_CONTRACT')) ? '1' : '2') 

但根據在這裏你可以把它們連:javascript shorthand if statement, without the else portion

但它不能正確評估。我做錯了什麼,如何解決?

+2

():()是無效的......也永遠不會達到3。 –

+0

更改括號? '(!contract.hasOwnProperty('COMMIT_CONTRACT'))? '1':(contract.hasOwnProperty('COMMIT_CONTRACT')?'2':'3')'? –

+0

你的第二個代碼很好。你爲什麼需要第一個?一個?1 :(!a?2:「永遠不會到達」)對我來說毫無意義... –

回答

1

你搞砸了圓括號(())。

按照我的理解,
這是你的第一個條件:!contract.hasOwnProperty('COMMIT_CONTRACT')
if的首要條件部分是'1'
else的首要條件部分是第二個條件:contract.hasOwnProperty('COMMIT_CONTRACT')
if第二個條件的一部分是'2',
您的else第二個條件的一部分是'3'

讓我們添加一些括號,使美國以及對編譯它更具可讀性,

(!contract.hasOwnProperty('COMMIT_CONTRACT')) ? '1' : (contract.hasOwnProperty('COMMIT_CONTRACT') ? '2' : '3') 

有趣的事實,你將永遠不會得到'3'

1

你不需要所有的東西()。這將工作得很好:

var variable = !contract.hasOwnProperty('COMMIT_CONTRACT') ? '1' : contract.hasOwnProperty('COMMIT_CONTRACT') ? '2' : '3';