サイトトップ

Director Flash 書籍 業務内容 プロフィール

HTML5テクニカルノート

論理和(||)と論理積(&&)演算子

ID: FN1212003 Technique: HTML5 and JavaScript

論理和||演算子
文法 式1 || 式2
演算 オペランド(被演算子)の式1をブール(論理)値として評価し、trueとされるときは式1の値、falseであれば式2の値を演算結果とする。
結果 オペランド(式1と式2)のいずれかの値(後掲表002参照)。
論理積&&演算子
文法 式1 && 式2
演算 オペランド(被演算子)の式1をブール(論理)値として評価し、trueとされるときは式2の値、falseであれば式1の値を演算結果とする。
結果 オペランド(式1と式2)のいずれかの値(後掲表002参照)。

説明

おもに、ふたつの条件を組合わせるときに用いられる演算子です。オペランド(被演算子)をブール(論理)値として評価したとき、論理和演算子||はいずれかがtrueの場合、論理積演算子&&はすべてがtrueのときに、trueと評価される結果となります。論理学の用語では、論理和||は「または」、論理積&&が「かつ」に当たります。

オペランドがブール値である場合には、演算の結果もtruefalseかのブール値となります。演算子||&&についての演算結果は、それぞれ下表001のとおりです。

表001■オペランドがブール値の場合の論理和||と論理積&&の演算結果
式1 || 式2
式1の値 式2の値 演算結果
true true true
true false true
false true true
false false false
 
式1 && 式2
式1の値 式2の値 演算結果
true true true
true false false
false true false
false false false

もっとも、ふたつの論理演算の結果は厳密にはブール値ではなく、オペランドのいずれか(式1か式2)の値です(表002)。したがって、演算子の右の項(式2)は、とくにブール値としての評価はされません。ただし、値が返されるときには、式2の値そのものは評価されます。つまり、関数であれば、値を返すときに呼出されます(値を返さないときは呼出されません)。

表002■オペランドがブール値でない場合の論理和||と論理積&&の演算結果
式1 || 式2
式1の評価 演算結果
true 式1の値
false 式2の値
 
式1 && 式2
式1の評価 演算結果
true 式2の値
false 式1の値

なお、ブール値でないデータのブール値としての評価は、下表003のようになります。

表003■ブール値でないデータのブール値評価
データの種類 ブール値評価
true false
数値 0以外の数値 0とNaN
文字列 長さが0でない文字列 空文字列("")
オブジェクト オブジェクトが存在 undefinedやnull

以下のJavaScriptコードの関数(isLeapYear())は、引数に渡された年がうるう年かそうでないかをブール(論理)値で返します。剰余演算子%の結果は、左オペランドで右オペランドの項を割った余り(剰余)です。なお、うるう年はつぎの3つの条件によって判別されます[*1]

    【うるう年の判定方法】
  1. 4で割り切れる年はうるう年。
  2. ただし例外として、100で割り切れる年は普通の年。
  3. さらに例外の例外として、400で割り切れる年はうるう年。

function isLeapYear(nYear) {
  return ((nYear % 4 == 0 && nYear % 100 != 0) || nYear % 400 == 0);
}

[*1] 処理を最適化しようと考えた場合には、判定の仕方には工夫の余地があります。詳しくは、「ActionScript 3.0におけるパフォーマンス向上のヒント」03「条件判定を考える」をお読みください。。


参考

MDN「論理演算子


作成者: 野中文雄
作成日: 2012年12月11日


Copyright © 2001-2012 Fumio Nonaka.  All rights reserved.