Graphics Programming

undefined와 null는 미묘하게 다르다 본문

Season 1/플래시

undefined와 null는 미묘하게 다르다

minseoklee 2009. 10. 21. 14:57


undefined는 타입이 없는 변수에만 할당할 수 있다. 또한 초기화하지 않은 동적 인스턴스 변수의 기본값이기도 하다. 참고로 이런 변수들이 타입 없는 변수다.
var varName
var varName:*


타입 있는 변수에 undefined를 할당하면 undefined가 할당되지 않는다.
var obj:Object = undefined; trace(obj); // null
var str:String = undefined; trace(str); // null
var num:Number = undefined; trace(num); // NaN
var ui:uint = undefined; trace(ui); // 0
var i:int = undefined; trace(i); // 0
var b:Boolean = undefined; trace(b); // false

타입 있는 변수에 undefined를 할당하면 그 타입의 기본값이 들어간다. 그리고 위에서 말했듯이 초기화하지 않은 동적 인스턴스 변수의 기본값은 undefined다.
var obj:Object = {};
trace(obj.undefVar); // undefined


null은 Null 타입의 유일한 값이다. 그리고 초기화하지 않은 Object 타입의 변수에 대한 기본값이다. (Object 타입의 변수에는 타입이 Object의 서브클래스인 모든 변수가 포함된다) 단 String, Number, int, uint, Boolean 타입은 제외.

trace(undefined == null); // true
trace(undefined === null); // false


하지만 둘을 똑부러지게 구분해서 써야 하는 상황은 없을 듯하다.
Comments