JavaScript에서 null과 undefined는 모두 "값이 없음"을 나타내지만, 의미와 사용 목적에서 차이가 있는 것이다. 이 둘은 메모리 관리와 가비지 컬렉션에도 서로 다른 영향을 미치는 것이다.
undefined 값을 가지는 것이다.undefined를 반환하는 것이다.undefined가 반환되는 것이다.let a; // 선언만 하고 초기화하지 않음
console.log(a); // undefined
let obj = {};
console.log(obj.prop); // undefined
let b = null; // 의도적으로 값이 없음을 지정
console.log(b); // null
typeof undefined는 "undefined"를 반환하는 것이다.typeof null은 "object"를 반환하는데, 이는 JavaScript 설계 초기의 버그로 현재까지 유지되고 있는 것이다.==)에서는 null과 undefined가 동등하게 간주되는 것이다.===)에서는 서로 다른 값으로 간주되는 것이다.console.log(null == undefined); // true
console.log(null === undefined); // false
null로 설정하면, 해당 참조가 끊어지고 가비지 컬렉션 대상이 되는 것이다.let obj = { key: "value" };
obj = null; // 더 이상 obj가 객체를 참조하지 않음 → 가비지 컬렉션 대상undefined로 설정한다고 해서 가비지 컬렉션 대상이 되지는 않는 것이다.null 값은 유지되는 것이다.undefined 값은 무시되는 것이다.const obj = { a: null, b: undefined };
console.log(JSON.stringify(obj)); // {"a":null}
undefined: JavaScript가 자동으로 할당하며, "초기화되지 않음" 또는 "존재하지 않음"을 나타내는 것이다.null: 개발자가 의도적으로 설정하며, "값이 없음" 또는 "참조를 제거함"을 명시하는 것이다.올바른 상황에서 이 두 값을 적절히 사용하는 것이 코드의 가독성과 유지보수성을 높이는 데 중요한 것이다.