2012-01-29 7 views
14

if-elseのjavascriptの短縮形を関数から返すことはできますか?もしそうなら、これはどのように機能しますか?Javascriptの略語if-elseと返す

例えば、 私はこれがあります。

if(boolean){ 
return; 
} 

を、私はこのようにそれを書きたいと思います:

(value)? return; 

Chromeはリターンが予想外であることを不平を言います。それはそれが有効であるようにこれのような何かを書くためにとにかくありますか?

+2

if-elseの略語ではありません。それはまったく別のもので、この作業には適していません。 –

+3

これはうまくいきません: 'someVal && return;'。コンソールに '予期しないトークンの戻り 'と表示されます。 –

答えて

24

いいえ、値を返さない限り、これを行うことはできません。

return boolean ? 'foo' : 'bar'; 

をしかし、あなたは条件演算子を使用して、ボイドを返すことで、関数の実行を停止することはできません:あなたの関数が値を返さなければならなかった場合たとえば、あなたが書かれている可能性があります。あなたがこれですternary operator

をやりたい

1

(bool) ? ifTrue : ifFalse; 

ご注意:あなたは三項演算子の他の部分を省略することはできません。

http://en.wikipedia.org/wiki/Ternary_operation

+0

実際にコードの「長い」バージョンが何をしたのか分かりません。 – Shog9

+2

いいえ、私はそれを手に入れます。しかし、彼は三元演算子を使用しようとしていたかのように見え、元の "長い" if文でそれを想起させるように強制しようとしていました。彼が単にif文を中括弧で囲んで使用したいと思っていたら、そう言えるかもしれません。 * shrug * – Kristian

9

あなたは関係なく、テストが真か偽評価されるかどうか、あなたが使用することができ、その実行で、この時点では機能から復帰する場合は、

return (value) ? 1 : 2; 

しかし、あなただけであればテストが真であると評価されたときに早期に復帰したい場合(たとえば、パラメータが無効な場合に実行を防ぐためのサニティチェック)、できるだけ短くすることができます:

if (boolean) return; 
+2

2番目のものだけが実際に質問の最初の例と同じように動作します。それは確かに短いです - カッコと改行を含む奴隷的な方法の良いイラストは、足で自分を撃つ欲望につながる可能性があります! – Shog9

+0

良い編集@ Shog9、私は常に言葉に欠けています。 –

0

単純な条件付き変数の代入に条件付き "3項演算子"(condition ? expression to evaluate when true : expression to evaluate when false)がよく使用されます。

あなたが必要な場合:

if(x > 0) { 
    a = 10; 
}else{ 
    a = 30; 
} 

あなたが書くことができます。

a = (x>0)? 10 : 30; 

P1場合は、(P1、P2、P3)3つのパラメータを取り、単純な機能、のように考えることができtrueの場合はp2を返し、p1がfalseの場合はp3を返します。

(p1)? p2 : p3; 

そして、ちょうどそのような機能のような、それは条件に基づいて返すように機能を発生させるために方法はありません。 ではなく、です。したがって、if/elseの省略形です。

3
if(boolean) return; 

完全に有効な単一行です。