javascriptの論理演算子

今日は、javascriptの論理演算子について話します。
と、言うのも僕が普段使ってるPHP/Javaとjavascriptは論理演算子の返す値が違うのですね。

Mozillaのjavascriptのドキュメント(論理積)には次のように書かれています。

(Logical AND) Returns expr1 if it can be converted to false; otherwise, returns expr2. Thus, when used with Boolean values, && returns true if both operands are true; otherwise, returns false.

要するに、expr1 && expr2 の時
expr1がfalsy(false判定)であればそれを返して、そうでなければexpr2を返すそうです。

PHPやJavaと違ってboolean値でないのがポイントで、
例えば

if(a){
 return a.method();
}else{
 return a;
}

は以下のように省略できます。

return a && a.method();

そしてjavascriptの論理和は以下のように説明されています。

(Logical OR) Returns expr1 if it can be converted to true; otherwise, returns expr2. Thus, when used with Boolean values, || returns true if either operand is true; if both are false, returns false.

つまり、expr1 || expr2 の時
expr1がtruthy(true判定)であればそれを返して、そうでなければexpr2を返すそうです。
(&&の逆です。)

だからjavascriptでは以下のように変数を初期化することができます。

var myVar = input || default;

さらにテクニカルな使い方はこのサイトで解説されています。
http://addyosmani.com/blog/exploring-javascripts-logical-or-operator/
これRubyユーザであればa &&= b や a ||= b があるのですぐになじむかも知れませんが、
PHP使い/Java使いだと、混乱しそうですよね。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中