2017-05-24 28 views
1

は、私は他しかしネスト三項演算子

(!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

2番目のコードは問題ありません。なぜあなたは最初のものが必要ですか? ?1 :(!a?2: "決して到達しません")私には意味がありません... –

答えて

1

あなたはかっこ(())でうんざりしています。これがあなたの第一の条件である
私の理解によると

、:!contract.hasOwnProperty('COMMIT_CONTRACT')、最初の条件のあなたのif一部が'1'、最初の条件の
あなたelse一部です
は、第二の条件である:contract.hasOwnProperty('COMMIT_CONTRACT')
あなたif第2の条件の一部は'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';