2009-05-06 11 views
6
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4; 

||この場合はどうしますか?
_4をAttacklab.wmd_env.buttonsの配列に追加しますか?||オペレータは?

+4

タイトルを修正してください。 – rkb

+4

うわー、タイトルを取得するのに7回の試行が必要でした... – Pool

答えて

18

JavaScriptの演算子は、その値がfalseに評価されない場合、左の値を返します。そうでない場合は、右側の値を返します。 Mozilla's Core JavaScript 1.5 Referenceから

expr1 || expr2
返しexpr1それをtrueに変換できる場合。それ以外の場合はexpr2を返します。したがって、ブール値で使用すると、||はどちらかのオペランドが真であれば真を返します。両方がfalseの場合はfalseを返します。

Attacklab.wmd_env.buttonsが値を持っていないのであれば、この場合には、それは_4に値を設定します。

+0

MDCがむしろあいまいな "返り値expr1 **を**に変換することができれば本当に"というのは奇妙です。それは実際には「変換できる」ということではなく、値の式が返すものです。 – kangax

8

Attacklab.wmd_env.buttonsnullまたはundefinedの場合、デフォルト値は_4に設定されます。

12

それはデフォルト値を提供するためのうれしいです

if(!Attacklab.wmd_env.buttons) 
    Attacklab.wmd_env.buttons = _4; 

を書くの空想方法です。 nullundefinedだけで条件付きが発生するだけでなく、0,と''、つまりブール値のコンテキストではfalseとみなされるすべてのものがトリガされることに注意してください。

+0

+1の値を明示的にリストするために+1 –

+0

そしてもちろん、 'NaN';) – kangax

+0

@kangax:yup、それはリストにない唯一のものでした(ECMA-262のセクション9.2を参照) – Christoph

4

||演算子は、式の左側に指定された値が(ブール値のコンテキストで)falseかどうかをチェックします。そうであれば、式の右辺で示される代替値を返します。それ以外の場合は元の値を返します。

それがnullであれば、たとえば次のコードは、デフォルト値に「foo」を設定します:

 
Foo = Foo || "Default Value" 

は、これは、時には合体演算子と呼ばれています。 RubyやPerlなどの他の言語でもサポートされています。 C#には?同じことをする演算子。

+0

だから、この答えは彼が何を呼んでいるのか、他の言語学者がそれを使用しているのか、そしてC#のさまざまな構文さえ知っています...そして彼はそれが何をしているのかまだ分かりません。 – Beska

+0

良い点、私はおそらくちょうどコメントを残している必要があります。とにかく、私の答えは更新されました。 –

+0

正しい名前を+1してください!他の人の質問/答えはそれを与えたくないようです... Xqueryでそれを見つけるのを手助けしました(それは好奇心を持っている人のために$ foo:=($ foo、 "デフォルト値")[1]です。 –