[javascript] null, 빈 배열 그리고 배열의 길이

null과 빈배열

자바스크립트에서 null, 또는 널이라는 것은 값이 지정되어 초기화되지 않은 객체를 말합니다.

정확히는 널객체라고 해야 합니다.

아래와 같이 null을 대입해 초기화를 합니다.

var data = null;
console.log(typeof(data));

그와 달리 빈배열은 배열 오브젝트로 초기화 되어 있으며, 배열 메서드를 사용할 수 있고, 길이 값이 0인 배열 객체를 말합니다.

빈 배열과 널은 완전히 다르며, 코딩 습관에 따라 다르겠지만, 배열을 사용하기 위해 변수를 생성할 경우 반드시 빈 배열로 초기화를 하는 것을 추천합니다.

빈 배열의 초기화는 

var data2 = [];
console.log(typeof(data2));

와 같이 배열 리터럴로 간단하게 표시를 하는 것으로 완료됩니다.

배열 객체는 길이 속성이 있고 배열의 요소 갯수를 알기 위해서는

Array.length;

와 같이 길이(length) 속성값을 통해 정보를 얻게 됩니다.

널로 초기화한 객체는 기본 객체이기 때문에 길이 값이 없고, data.length 로 속성에 접근하면 바로 에러가 표시됩니다.

길이 속성을 사용할 수 있는지 체크

널은 객체 타입이지만 일반 객체와는 다르며, 자바스크립트에서 널객체는 불리언 체크시 false가 됩니다.

따라서 객체가 널(또는 undefined)인지 배열 객체인지 구분하기 위해 조건절로 체크를 할 수 있습니다.

if(data){
  console.log('길이'.data.length);
}
if(data2){
  console.log('길이'+data2.length);
}

이렇게 조건문으로 객체를 체크해서 널객체(또는 undefined)인지 여부를 판단할 수 있습니다.

배열을 넘겨받는 변수인 경우 이렇게 조건문으로 배열을 체크해주면 변수에 길이값을 사용할 수 있는지를 판단할 수 있기 때문에 에러가 발생하는 상황을 피할 수 있습니다.


!주의할 점

자바스크립트에서는 '', null, undefined, 0, NaN 은 false 입니다. 그 외의 모든 데이터는 true를 반환합니다.