2012-02-10 14 views
12

私はこれを使用しようとしており、動作していないようです。私はそれがちょうどオプションではないと推測しているが、確認したい。これは有効ですか?インラインJavaScriptのif文でelseを省略することはできますか?

(if_it_is) ? thats_cool(); 
+0

いいえ、それはオプションではありません。 'thats_cool()'が 'true'と評価される値を返す限り、代わりにバイナリ演算子(&&)を使用します。 –

+0

それには ':'とそれに続く値が必要です。あなたが望むなら、 'do_nothing()'という名前の関数を作成するだけでよいのですが...何もしません。 – Edwin

+1

user1048967、これは 'if(){}'と呼ばれます。 – Dykam

答えて

23

あなたがそこに&&を使用することができます。

if_it_is && thats_cool(); 

を基本的に同じです:あなたは三項演算子を使用していることを達成することはできません

if (your_expression){ 
    thats_cool(); 
} 
+0

ニース。あなたは、またはを使ってヌル合体を行うことができます。 var variable2 = variable1 || 'coalesceVal'; – Jason

+0

これは賢いですが、私には直感的ではありません。それはよく読まない。疑問符、私は得る。それはない。 – evan

+0

@ user1048967:他の言語から来ている人は難しいと感じますが、これは実際にあなたが学ぶ必要があるjavascriptの美しさと簡潔さです。最初は自分のように誰もが奇妙に見えましたが、私は混乱しましたが、今はそれを効果的に使用しています。 – Sarfraz

1

が、あなた使用&&の短絡の性質はあなたが望むことをする。

(if_it_is) && thats_cool(); 
0

いいえ、できません。 ?:は三項演算子であり、そのオペランドの3つすべてを持たなければならない(MUST)。

1

いいえ、できません。これは "インラインif文"ではなく、の3進演算子であり、それはまあ... 3進である。

(if_it_is) ? thats_cool() : null; 

あなたは、操作の戻り値に興味があるように思えませんので、あなただけ書くことができます:

if (if_it_is) thats_cool(); 

けれども。それは三元を使うよりもスタイルが良いでしょう。

0

3番目のコンポーネントがありません。そのようなものでなければなりません:

(if_it_is) ? thats_cool() : not_too_cool(); 

全体の意味は次のとおりです。

condition ? do_something_if_condition_is_true : do_something_if_condition_is_false; 
4

いいえ、それは有効ではありません。

条件付き演算子は、x ? y : zの形式をとります。第3オペランドは、ifelseと異なり、常に存在しなければなりません。

1

あなたが使用しようとしているのはTernary Operatorです。あなたはそれの他の部分を欠いています。

あなたが好きな何かができる:

(if_it_is) ? thats_cool() : function(){}; 

または

(if_it_is) ? thats_cool() : null; 

あるいは、他の人が示唆しているとして、あなたは他を気にしないならば、あなたは三元を避けることができます。

if_it_is && thats_cool(); 

JavaScriptでは、ほとんどの言語と同様に、これらの論理チェックは左から右へと進みます。したがって、最初にif_it_isが以外の文字列の'trusy' valuetrue,)であるかどうかを確認します。もしそれが合格しなければ、残りの声明は出ません。合格した場合は、ロジックの次のチェックとしてthats_coolを実行します。

ifステートメントの内部と考えることができます。 ifなし。だから、略語のようなものです

if (if_it_is && thats_cool()) { } 
関連する問題