undefined
와 null
의 차이를 알아보자.
undefined는 개발자가 의도적으로 할당하기 위한 값이 아니라
자바스크립트 엔진이 변수를 초기화할 때 사용하는 값
이다. 그래서 변수를 참조했을때 undefined가 반환된다면 초기화하지 않은 변수라는 것을 알 수 있다.
null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용
한다. (의도적 부재) 이는 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하는 것을 의미하며, 자바스크립트 엔진은 누구도 참조하지 않는 메모리 공간에 대해 가비지 콜렉션을 수행한다.
console.log(null == undefined); // true
==
연산으로 비교하면 true로 나온다.
console.log(null === undefined); // false
===
연산으로 비교하면 false가 나온다.
console.log(null > 0); // false
console.log(null < 0); // false
console.log(null == 0); // false
console.log(null >= 0); // true
기타 비교 연산자(>,<,>=,<=)의 경우 null을 숫자형 0으로 변환하여 비교한다.
console.log(undefined > 0); // false
console.log(undefined < 0); // false
console.log(undefined == 0); // false
console.log(undefined >= 0); // false
undefined는 숫자형 NaN으로 변환하여 비교를 하는데, NaN이 피연산자인 경우에 항상 false를 반환한다.