JavaScriptの論理演算子は、true/falseを返却しない
ソースコードを色々見ていると、下のようなコードが出てきた。
なぜこれで初期化ができるのかわからなかったので調べると、JavaScriptの論理演算子(&&、||)はtrue/falseを返さないとのこと。
ほとんどのJavaScript入門サイトでは、論理演算子(&&、||)はtrue/falseを返すと書かれているけど間違いみたい。
var foo ={}; var bar = foo.data1 || 50;
上記では、foo.data1が存在している場合にはbarにfoo.data1が設定され、存在していない場合にはbarに50が設定される。
JavaScriptでの論理演算子の動きは、以下のとおり。
論理積(&&) | expr1 && expr2 | expr1がfalseに変換できるときには、expr2を返却。変換できないときには、expr1を返却。 |
---|---|---|
論理和(||) | expr1 || expr2 | expr1がtureに変換できるときには、expr1を返却。変換できないときには、expr2を返却。 |
これで、論理和が初期化に使われている意味がわかった。
参考: