null 과 undefined 의 차이

null 과 undefined 의 차이

어떤 분께서 null 과 undefined 의 차이를 물어보셔서, 제가 읽었던 책을 근거로 직접 답변을 달아보았습니다.

var a; 는 언디파인드, 정의되지 않은 상태입니다. var a = null; 은 null 이라는 초기값이 부여된 상태입니다.

“대부분 undefined와 null을 자주 혼동합니다. 이 둘을 잘 구분하지 못하는 이유는 null == undefined가 true이기 때문입니다. 그러나 undefined와 null의 사용법은 많이 다릅니다. 초기화되지 않은 변수는 초기 값으로 undefined를 갖습니다. 즉 변수가 실제 값으로 초기화되기를 기다린다는 의미입니다.” (니콜라스 자카스 / 읽기 좋은 자바스크립트 코딩 기법 / p41)

“다음은 null을 사용하면 안되는 경우입니다. 함수의 인자 값을 확인하기 위해 null로 비교해서는 안된다. 초기화되지 않은 변수를 null로 비교해서는 안된다.” (니콜라스 자카스 / 읽기 좋은 자바스크립트 코딩 기법 / 40p)

부연하자면 니콜라스 자카스는 undefined 사용을 권장하지 않습니다. 이유는 var a; 를 쓰든 쓰지 않든간에(아무 코드가 존재하지 않든간에) typeof a 가 undefined 이기 때문입니다. var a = null; 을 사용함으로써 변수에 값 할당 예정임을 명시적으로 표현할 필요가 있습니다. 즉, undefined라는 것은 (자바스크립트 한정) 2가지입니다. (1) var a; (2) var a;라는 코드조차 없음. 보통은 후자를 의미하겠지요.