嵌套三元运算符
Nesting ternary operators
我正在尝试写一个长篇if else if
(!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
但它没有正确评估。我做错了什么,我该如何解决?
You messed up with parenthesis (()
).
据我了解,
这是你的第一个条件:!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'
。
你不需要所有的 () 围绕一切。这会很好用:
var variable = !contract.hasOwnProperty('COMMIT_CONTRACT') ? '1' : contract.hasOwnProperty('COMMIT_CONTRACT') ? '2' : '3';
我正在尝试写一个长篇if else if
(!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
但它没有正确评估。我做错了什么,我该如何解决?
You messed up with parenthesis (
()
).
据我了解,
这是你的第一个条件:!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'
。
你不需要所有的 () 围绕一切。这会很好用:
var variable = !contract.hasOwnProperty('COMMIT_CONTRACT') ? '1' : contract.hasOwnProperty('COMMIT_CONTRACT') ? '2' : '3';