2015년 1월 26일 월요일

[JavaScript] 자바스크립트 Undefined 와 Null의 차이

Undefined Type


자바스크립트의 Undefined 타입은 값이 1개밖에 없다. 바로 'Undefined' 단 하나이다.
이 Undefined 라는 값은 변수가 정의되지 않았다는것을 의미하는데, 가장 쉽게 이 값을 얻는 방법은 var 키워드를 이용해 변수를 선언하고 초기화 하지(값이 어싸인되지 않았을 때) 않는 것 이다.


var testVar;
console.log(testVar);//undefined 가 프린트 될 것이다.
console.log(typeof testVar);//undefined 가 프린트 될 것이다.


ECMAScript 는 Primitive Data Type(원시 자료형) 5개, Composite/Reference Data Type(객체) 1개, 총 6개의 자료형을 가지고 있는데 undefined 는 Primitive Data Type 중 하나 이며, 저 5개의 Primitive Data Type(원시 자료형)에 포함되지 않는 값을 나올 때 있을 때 자동으로 undefined 값이 된다.
물론 변수에 undefined 값을 어싸인해주는 것도 가능하다


var undefinedVar = undefined;
console.log(undefinedVar);//undefined 가 프린트 될 것이다.
console.log(typeof undefinedVar);//undefined 가 프린트 될 것이다.


하지만 ECMAScript에 undefined 라는 자료형이 추가된 것은 단순히 변수 값들의 비교 작업을 수월히 하기 위해서이니, 위와 같이 변수 값에 undefined를 어싸인해주는 것은 자제하도록 하자.
그리고 또 하나 알아둬야 할 것은, 자바스크립트에서 변수생성은 변수 선언(Variable Declaration)에 의해 이루어지니 선언된적 않은 변수들은 절대로 undefined 값을 가지지 않는다.


var undefinedVar;//세미콜론(;)으로 선언을 완료했다.
console.log(undefinedVar);//undefined 가 프린트 될 것이다.
console.log(undeclaredVar);//Uncaught ReferenceError: undeclaredVar is not defined 에러를 보게될것이다


Null Type


Null 타입은 Undefined 타입과 같이 값이 null 1개 밖에 없다. Null 타입과 Undefined 타입의 차이점은 undefined 타입이 Primitive Data Type(원시 자료형)에 사용되는 자료형이고, null 타입은 Complex Data Type(복합 자료형), 즉 Ojbect(오브젝트)에 사용되는 자료형이라는건데... 즉 이론적으로 Null 타입은 Empty Object를 가리키는 포인터인데, 이 때문에 null 값을 가진 변수나 null 값에 typeof 연산자를 사용하게 되면, object 라는 결과가 나온다.


var t = null;
console.log(typeof t);//object 가 프린트 될 것이다
console.log(typeof null);//object 가 프린트 될 것이다


참고로 undefined 값은 null 값의 하위 타입이라 == 연산자를 이용해 비교하게되면, true 값이 나온다.



console.log(undefined==null);//true 값이 나온다.



그렇다면 이 null이라는 자료형을 어디에 써먹어야 하는가, 간단하다.
추후에 필요한 object 타입의 변수를 미리 생성해 놓아야할 때


var t = null;
if(t==null){
t = loadbook();
}


또는 Empty Object 가 필요한 작업에


var book = null;
book = loadBook()
if(book==null){
alert("책을 로드하는데 실패했습니다.");
}


요렇게들 사용하면 된다.

댓글 없음:

댓글 쓰기