2016-09-30 17 views
0

これはデフォルト値割り当てるには人気のあるパターンです:上記ブール式を正しく評価しているChrome Javascriptはありますか?

var aBool = '' || false; 
var aString = false || ''; 

は、少なくともChromeのとFFのコンソールで、aBoolブールに空の文字列の値をfalseの値、およびaStringのを与えるだろう。それは逆です:

trueに変換できる場合はexpr1を返します。それ以外の場合は、 expr2を返します。したがって、ブール値で使用すると、|| オペランドをtrueに変換できる場合はtrueを返します。両方ともfalseに変換できる場合、 はfalseを返します。 ソース:mozilla

実際には便利ですが、それは正しいのですか?

+1

いいえ、実際には意味がありません。そのページを自由に編集してください(「... ...」部分は削除する必要があります)。 – georg

+0

"' true'に変換できる場合は 'expr1'を返し、それ以外の場合は' expr2'を返します。 –

+2

何が問題なのですか? *ブール値*とともに使用すると、いずれかのオペランドが真の場合はtrueを返し、両方が偽の場合はfalseを返します。 – adeneo

答えて

0

その同じWebページから、それは言う:falseに変換することができ、式の

例は以下のとおりです。

  • はnull;
  • NaN;
  • 0;
  • 空の文字列( "");
  • は未定義です。あなたの最初の例で

、あなたは空の文字列を持っているので、ブールに変換する場合には、falseに変換します。 expr1trueに変換できないため、式はexpr2false)を返します。

2番目の例では、expr1falseであるため、expr2、つまり''を返します。 Booleanへの変換は、どの式を返すべきかを決定するためだけに使用され、変換された値は返されません。

+0

ありがとう、私はそれが何をしているか知っている、ちょうど混乱した医者と。それは今修正されました。私は安心しています;) – ptrk

関連する問題