Let's make something

PHPやJavaScriptを学びながら、サイトを作ってみようと思う今日この頃

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を返却。


これで、論理和が初期化に使われている意味がわかった。


参考: