두 타입 모두 자바스크립트에서 '값이 없음'을 표현한다.
undefined와 null 모두 데이터 타입이자 값을 나타낸다.
값이 할당되지 않은 변수는 undefined 타입이며, 변수 자체의 값 또한 undefined이다.
var under;
와 같이 변수를 선언하면 under 변수에 초기값으로 undefined가 할당된다.
명시적으로 값이 비어있음을 나타내기 위해 사용한다.
아무것도 참조하지 않고 있다 라는 의미가 담겨있으다.
객체를 담을 변수를 초기화 할 때 많이 사용한다.
type of null === 'object'
이렇게 뜨는 이유는 자바스크립트의 자체 버그로 인한것이다.
어떤 변수의 값이 null인지 여부를 확인하기 위해서는 일치연산자(===)를 사용하는것이 좋다. a === null
var a;
console.log(a) // undefined 값을 대입하지 않은 변수에 접근
var obj = { a: 1 };
console.log(obj.a) // 1
console.log(obj.b) // undefined 존재하지 않는 프로퍼티
console.log(b) // b is not defined 전역에 b라는 변수는 존재하지 않음.
var func = function() { };
var c = func(); // 반환값이 없으면 undefined를 반환한 것으로 간주함.
console.log(c); // undefined
사용자가 어딘가에 지정해준 undefined값은 실존하는 데이터인 반면 자바스크립트 엔진이 반환해주는 undefined는 문자 그대로 값이 없음을 나타낸다.
가능한 undefined를 사용자가 직접 지정해주는것은 피하도록 하자.
비어있음을 명시적으로 표현하기 위해서는 null을 사용하자.