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, </> |
'플렉스·플래시·액션스크립트3' 카테고리의 다른 글
[AS3] 신기한 액션스크립트를 한번에.. (0) | 2012.01.09 |
---|---|
[Flex Socket] 안정적인 read method 만들기 (0) | 2012.01.04 |
[Inspectable] 메타 태그 사용하기 (0) | 2011.11.11 |
flex4에서 flashvars 사용하기 (0) | 2011.05.11 |
addEventListener 사용시 주의점 (0) | 2011.05.04 |