본 포스팅은 코어 자바스크립트 책을 읽고 정리한 내용입니다.
사용자가 명시적으로 지정할 수도 있지만, 값이 존재하지 않을 때 자바스크립트 엔진이 자동으로 부여함.
자바스크립트 엔진이 undefined을 반환하는 경우
var arr1 = new Array(3);
console.log(arr1); // output : [empty x 3]
var arr2 = [undefined, undefined, undefined];
console.log(arr2); // output : [undefined, undefined, undefined]
null 역시 undefined와 처럼 "없음"을 의미한다. 그래서 '비어있음'을 명시하고자 할 때는 undefined가 아닌 null만 사용하는 규칙을 따른다면 undefined는 오직 값을 대입하지 않은 변수에 접근하고자 할 때 자바스크립트 엔진이 반환해주는 값으로 구분시킬 수 있다.
자바스크립트 자체 버그 중 하나인 typeof null이 ojbect라는 점인데, 따라서 어떤 변수의 값이 null인지 여부를 판별하기 위해서는 다른 방식으로 접근해야한다.
var n = null;
console.log(typeof n); // output : object
console.log(undefined == null) // output : true
console.log(undefined === null) // output : false
Null과 undefined를 동등 연산자(==)로 비교를 한다면 서로 같다고 판단합니다. 따라서 어떤 변수가 실제로 null인지 아니면 Undefined인지는 동등 연산자로 비교해서는 알 수 없기 때문에, 일치 연산자(===)를 써야만 정확히 판별할 수 있다.
『코어 자바스크립트』 (정재남, 위키북스)