http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions

위 링크에 있는 코딩 컨벤션에서도 보시면 알 수 있듯이..

flex에서는 if구문 안에서 Object를 상속 받은 모든 객체는 값의 유무에 따라서

true, false와 같이 Boolean타입의 데이터를 리턴해줍니다.

var data = []; //new Obejct();

허나 문제는

public set data(value:Object):void

{

this.data = value;

}

이렇게 data의 값을 지정하고

이것을 다시 어떤 메소드에서 null체크할 때 발생합니다.

if(data)

{

//실행

}

else

{

//실행2

}

이때 만약 0이라는 값을 이 컴포넌트에 mxml로 <comp:MyComp data="0" width="100%" height="100%"/>

하려고 할 때 약간의 문제가 발생합니다. 사실 대부분의 사람들은 null이 아닌 경우를 체크하기 위해서

if(data)라는 구문을 쓰게 되는데 "0"이라는 값을 Object타입으로 넣으면 false를 리턴하게 됩니다.

즉 null이 아닌데도 불구하고 실행2가 실행되는거죠.

Object타입일 경우엔 null체크를 if(data != null)로 정확히 명시해주셔야합니다.

Type Can you remember which of these values coerce to false?
Number 0, NaN
String null, ""
XML / XMLList null, </>
Array null, []
Object null, {}, 0, NaN, false, </>
* undefined, null, {}, 0, NaN, false, </>
Posted by 미랭군