undefined
은 변수를 선언하고 값을 할당하지 않은 상태,
null
은 변수를 선언하고 빈 값을 할당한 상태(빈 객체) 를 의미한다.
undefined
는 원시값으로, 선언은 됐지만 아직 value
가 할당되지 않은 경우 의미한다.
ull
은 원시값으로, ‘빈값’을 의미하는데 사용자가 준 value
이다.
그래서 undefined
와 다르게 자바스크립트가 자동적으로 null
이란 값을 줄 수 없다.
let a;
let a = null;
console.log(null == undefined); //true
console.log(null === undefined); //false
염격일치 연산(===)는 value뿐만 아니라 type도 같아야 true가 나온다.
아래를 참고하면 차이를 쉽게 이해할 수 있다.
typeof null // "object" (하위호환 유지를 위해 "null"이 아님)
typeof undefined // "undefined"
null === undefined // false
null == undefined // true
null === null // true
null == null // true
!null // true
isNaN(1 + null) // false
isNaN(1 + undefined) // true
console.log(typeof null);
// object
console.log(typeof undefined);
//undefined
null
의 type
이 object
인 이유는 ‘값이 없음’을 의미하는 ‘할당된’ value
이기 때문이다.
✅ undefined
는 값이 지정되지 않은 경우를 의미하지만, null
은 해당 변수가 어떤 객체도 가리키고 있지 않다는 것을 의미한다.
참조 >
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/null
https://developer.mozilla.org/ko/docs/Glossary/undefined