おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

« 2011年4月 | メイン | 2011年6月 »

2011年5月

2011年5月 7日 (土)

Javascriptでの論理OR、論理ANDの注意点

Javascriptで変数を判定する場合に、判定条件が2個以上あるときに論理演算を使います。
例として以下の様な感じでしょうか。

最初のif文は(x > 10)の論理式と(y > 20)の論理式をAND演算で結合し判定しています。
また、次のif文はそれぞれの論理式をOR演算で結合しています。

これらを以下の様にしてみると、新しい変数h1、h2にはそれぞれ論理演算の結果であるtrueもしくはfalseの値が設定されます。

論理OR、論理ANDの前後が論理式の場合は分かりやすいのですが、それが式そのものであった場合はどうなるでしょうか。
以下の様に書いてみます。

この例では、「x || 10」の「x」の値がfalseと判定されない値(空では無い文字列, 0ではない数値, オブジェクト等)の場合、 その値が「h1」に代入されます。この場合、論理演算子の右側の「10」は判定されないことになります。
また、「x」の値がfalseと判定された場合は「10」が「h1」に代入されます。

「y && 20」の「y」の値がfalseと判定された場合は、論理ANDなので右側の「20」は評価されずにfalseが「h2」に代入されます。
また、「y && 20」の「y」の値がfalseと判定されない場合は、右側の「20」が評価され「h2」にその値が代入されます。

これらの考え方で「(x > 10) && (y > 20)」および「(x > 10) || (y > 20)」を再び見てみれば分かりやすいと思います。

「x || 10」の方法を関数の引数のデフォルト値設定などで利用できると思われます。