=== 厳密な等価演算子

expression1 === expression2

2 つの式が等しいかどうかをテストします。厳密な等価 (===) 演算子は、データ型が変換されない点を除いては、等価 (==) 演算子と同じです。両方の式が、そのデータ型も含めて等しい場合、結果は true です。

"等価" の定義は、パラメータのデータ型により異なります。

使用できるバージョン : ActionScript 1.0、Flash Lite 2.0

オペランド

expression1 : Object - 数値、ストリング、ブール値、変数、オブジェクト、配列、または関数。

expression2 : Object - 数値、ストリング、ブール値、変数、オブジェクト、配列、または関数。

戻り値

Boolean - 比較結果を表すブール値。

次のコードのコメントは、等価演算子および厳密な等価演算子を使用した演算の戻り値を示しています。

 // 変換が実行されていないので、両方とも true を返す 
var string1: String = "5"; 
var string2: String = "5"; 
trace(string1 == string2); // true 
trace(string1 === string2); // true 
// この例の自動的な型指定により、5 を "5" に変換する 
var string1: String = "5"; 
var num: Number = 5; 
trace(string1 == num); // true 
trace(string1 === num); // false 
// この例の自動的な型指定により、true を "1" に変換する 
var string1: String = "1"; 
var bool1: Boolean = true; 
trace(string1 == bool1); // true 
trace(string1 === bool1); // false 
// この例の自動的な型指定により、false を "0" に変換する 
var string1: String = "0"; 
var bool2: Boolean = false; 
trace(string1 == bool2); // true 
trace(string1 === bool2); // false

次の例では、厳密な等価で比較する場合に、参照を格納する変数とリテラル値を格納する変数の扱いがどのように違うかを示しています。この結果を見ると、String クラスでは new 演算子の使用を避け、ストリングリテラルを使用する理由が明らかになります。

 // ストリングリテラル値を使用したストリング変数を作成する 
var str: String = "asdf"; 
// 参照となる変数を作成する 
var stringRef: String = new String("asdf"); 
// 等価演算子はリテラル、変数、参照を 
// 識別しない 
trace(stringRef == "asdf"); // true 
trace(stringRef == str); // true 
trace("asdf" == str); // true 
// The strict equality operator considers variables that are references 
// distinct from literals and variables 
trace(stringRef === "asdf"); // false 
trace(stringRef === str); // false 

関連項目

! 論理否定 (NOT) 演算子, != 不等価演算子, !== 厳密な不等価演算子, && 論理積 (AND) 演算子, || 論理和 (OR) 演算子, == 等価演算子