플랙스도 다른 언어와 마찬가지로 값을 비교하기 위해서는 등호/부등호를 사용하여 같은지 여부를 Boolean값으로 반환을 한다. 
이러한 등호/부등호 연산자는 값을 비교하기전에 두 값을 같은 데이터타입으로 변환시키고 서로의 값을 비교한다.
가령 10 == "10"은 서로 다른 데이터 타입이지만 반환은 true를 반환한다. 이는 엄격하지 않은 환경에서 실행하였을 때 데이터 타입을 같은 타입으로 변환 비교 분석하므로 데이터 타입조차 우선 비교하기 위해서는 strict모드를 사용한다.

우선 비교적 엄격하지 않은 환경에서 값을 비교시
a:Number = 10
b:String = "10"
trace( a == b ) //출력:true
위의 코드는 true를 반환한다. 보다 정확한 검사를 하고 싶으면 엄격(strict)한 비교연사자를 사용한다.
a:Number = 10
b:String = "10"
trace( a === b ) //출력:false
엄격한 비교연산자 "==="이나 "!=="을 사용하여 데이터 타입조차 체크한다면
위의 결과값은 false를 반환하게 된다.

하지만 기본적으로 플랙스빌더의 컴파일러는 default가 strict를 사용하고 있으므로
a:Number = 10
b:String = "10"
trace( a == b ) //출력:false
는 false를 반환하게 된다. 이는 strict한 조건을 체크하기 때문에 값의 비교에 앞서
데이터 타입을 먼저 체크하고 이를 반환하게 되는것이다.

또한 데이터 타입 검사는 is연산자를 통하여 수행하기도 한다.
a:int = 10
if( a is int ){
    trace("Int !!")
}
결과는 콘솔에 "Int !!"를 출력한다.

액션스크립트는 데이터 타입에 따라 서로다른 검사방법으로 조건을 체크한다.
* 기본 데이터 타입 : String , number , int , Boolean...
* 복합 데이터 타입 : object , Sprite , Array , ByteArray , BitmapData..
기본 데이터 타입의 검사방식은 그들의 값을 비교하게 된다.
var a:Numbar = 10;
var b:Number = 10;
trace( a == b ) // 출력 : true

그러나 복합 데이터 타입의 그들의 참조(reference)로 비교하게 된다.
var a:Array = ["a","b","c"];
var b:Array = ["a","b","c"];
trace( a == b ) // 출력 : false

var a:Array = ["a","b","c"];
var b:Array = a
trace( a == b ) // 출력 : true
결국 복합데이터 타입은 같은 참조를 가지고 있을 때에만 동일하게 취급된다.

Posted by 정윤수 버터백통

댓글을 달아 주세요