Javascript 의 기본 데이터 형식은 아래와 같다.
기본 형식 : String, Number, Boolean
합성 형식 : Object, Array
특정 형식 : null, undefined
NULL 과 Undefined
1. NULL
- null 은 다른 모든 값들과 구분되는 고유한 값이다.
- null 은 어떠한 객체도 나타내지 않는 값으로 취급한다.
- 사용자가 고의로 값을 할당하여 값이 없다는 것을 명시하는 경우이다.
즉, 어떤 변수가 null 값을 가지면 그 변수는 기본 형식(String, Number, Boolean)이나 합성 형식(Object, Array)의 값을 담고 있지 않다는 것을 의미한다. 따라서, 어떤 변수의 값을 초기화하고 싶을 경우에는 null 을 사용한다.
null 이 숫자 문맥에서 사용되면 0, 문자열 문맥에서 사용되면 "null", 불리언 문맥에서 사용되면 false 로 변환된다.
// 숫자열에서 사용하는 경우
alert(1 + null); // 1 + 0 = 1
alert(1 - null); // 1 - 0 = 1
alert(1 * null); // 1 * 0 = 0
alert(1 / null); // 1 / 0 = Infinity
alert(1 % null); // 1 % 0 = NaN
// 문자열에서 사용하는 경우
alert("이것은 " + null + "입니다."); // 이것은 null입니다.
// 불리언에서 사용하는 경우
var a = null;
if (!a) alert("null 입니다."); // null 입니다.
2. Undefined
- undefined 는 변수 선언은 되었지만 값은 할당된 적이 없는 변수에 접근하거나, 존재하지 않는 객체 프로퍼티에 접근할 경우 반환되는 값이다.
- 프로그램이 실행하면서 존재하지 않는 값의 변수를 호출하도록 한 경우 나타난다.
var a;
alert(a); // undefined
alert(b); // undefined
alert("hello"); // 실행되지 않는다.
a 는 변수 선언은 되었으나 값이 할당된 적이 없는 경우의 undefined 이고,
b 는 선언되지 않은 변수를 호출한 경우의 undefined 로, 이 경우는 이후의 script 는 모두 실행되지 않는다.
따라서, 이런 경우는 반드시 undefined 에 대한 체크가 선행되어야 한다.
* tip : typeof
typeof 는 Number, String, Boolean, Object, Function, Undefined 중 하나를 문자열로 반환한다.
var objectA = {};
alert(typeof objectA); // object
alert(typeof objectA.a); // undefined
alert(objectA.a); // undefined
alert(typeof null); // object
JSON 객체의 경우는 객체 생성 후 존재하지 않는 값인 경우 자동으로 해당 멤버 변수가 생성되고 그 값은 undefined 가 된다.
즉, JSON 객체의 선언되지 않은 멤버 변수의 호출에 의한 오류는 없다.
* tip : == 과 ===
== (동등 연산자)의 경우는 null 과 undefined 를 같은 것으로 간주한다.
따라서, 정확한 구별을 위해서는 === (일치 연산자) 또는 typeof 를 사용한다.
최근 덧글