サイトトップ

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

Macromedia Flash非公式テクニカルノート

||(論理和)演算子

ID: FN0409002 Product: Flash

Platform: All
Version: MX and above

シンタックス
式1 || 式2

オペランド(被演算子)
式1および式2   プール(論理)値またはブール値として評価される式。

戻り値
式1または式2のどちらか1方の式の値[*1]を返します。

[*1] 各式がブール(論理)値を返す場合には、戻り値もtruefalseかのブール値になります。しかし、式の値がブール値でないときには、評価はブール値に変換して行われますが、戻り値は変換されたブール値ではなく式の値そのものです。

説明
(論理)演算子。オペランドをブール(論理)値として評価し、論理演算を行います。

オペランドがブール(論理)値を返す論理式(等価や非等価、比較などを調べる式)であれば、両式がともにfalseの場合のみfalseを返します[*2]。それ以外の場合、つまりどちらか一方の式または両式がtrueなら、戻り値はtrueになります(表001)。

表001■オペランドがブール値を返す場合の評価と戻り値
式1の値 式2の値 戻り値
true true true
true false true
false true true
false false false

オペランドの返す値がブール値以外の場合も含めた、一般的な処理の手順はつぎのとおりです。まず、||演算子の左側のオペランド式1が評価されます。式1の値がブール値trueに変換できる場合は、その式1の値が返されます。それ以外のときは、右側のオペランド式2の値が戻り値となります(表002)[*2]。

表002■オペランドの評価と戻り値
式1の評価 式2の評価 戻り値
true true 式1の値
true false 式1の値
false true 式2の値
false false 式2の値

なお、左側のオペランド式1trueと評価された場合には、右側のオペランド式2は評価そのものが行われません[*3]。

[*2] オペランドがブール値を返す式の場合と、それ以外の値の場合の例は、つぎのとおりです。

var x:Number = 0;
var y:Number = 1;
trace((x > y) || (x != y));  // 出力: true
trace(x || y);  // 出力: 1

[*3] 右側のオペランドに関数呼出しを指定した場合、左側オペランドがtrueと評価されれば、関数は呼出されません。

function xIsString(myValue:Object):Boolean {
  return ((typeof myValue) == "string" || (myValue instanceof String));
}
function xEvaluationTest() {
  trace("evaluating...");
  return "my value";
}
// [1] 左側オペランドがtrueの場合
// 右側オペランドに指定した関数は呼出されない
trace(xIsString("string") || xEvaluationTest());  // 出力: true
// [2] 左側オペランドがfalseの場合
// 右側オペランドに指定した関数が呼出される  // 出力: evaluating...
trace(xIsString(1) || xEvaluationTest());  // 出力: my value


以下のフレームアクションは、渡された値がストリング(文字列)かどうかを調べる関数を定義しています。ストリングであればtrue、それ以外はfalseを返します。値がストリングかどうかは、typeof演算子で調べることができます。しかし、この演算子は、Stringクラスのコンストラクタを呼出して生成したインスタンスに対しては、"object"を戻り値とします。以下の関数では、Stringインスタンスについても、trueを返すことにしました。指定したクラスのインスタンスかどうかは、instanceof演算子で調べることができます。

// フレームアクション
// 値がストリングかどうかを返す関数
// [引数] myValue: Object型(任意のデータ型)。ストリングかどうかを調べる値
// [戻り値] ブーリアン(論理)値。ストリングならtrue、そうでなければfalse
function xIsString(myValue:Object):Boolean {
  // データタイプが"string"であるかStringクラスのインスタンスであればtrueを返す
  return ((typeof myValue) == "string" || (myValue instanceof String));
}

Player
Flash Player 4.0以降。

関連項目
!(否定)演算子  !=(不等価)演算子  !==(厳密な不等価)演算子  &&(論理積)演算子  ==(等価)演算子  ===(厳密な等価)演算子

参考
Flash MX 2004 ActionScript Dictionary: || (logical OR)

_____

作成者: 野中文雄
作成日: 2004年9月3日


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