JavaScript에서 객체가 비어 있는지 확인하는 방법
Ethan Miller
Product Engineer · Leapcell

Key Takeaways
Object.keys(obj).length === 0
을 사용하여 비어 있는지 확인하는 가장 안정적인 방법입니다.- 항상 확인하기 전에 입력값이 null이 아닌 객체인지 확인하십시오.
- 성능 및 신뢰성 문제로 인해
JSON.stringify()
사용을 피하십시오.
JavaScript로 작업할 때 객체가 비어 있는지, 즉 자체 속성이 없는지 확인해야 하는 상황이 자주 발생합니다. 이 검사를 정확하게 수행하는 방법을 아는 것은 강력하고 버그 없는 코드를 작성하는 데 필수적입니다. 이 기사에서는 객체가 비어 있는지 확인하는 다양한 방법과 각 방법을 사용해야 하는 시기를 살펴봅니다.
"비어 있음"이란 무엇을 의미합니까?
객체는 열거 가능한 자체 속성이 없을 때 "비어 있음"으로 간주됩니다. 예를 들어:
const obj = {};
이 객체는 비어 있지만 다음 객체는 그렇지 않습니다.
const obj = { name: "Alice" };
방법 1: Object.keys()
사용
가장 일반적이고 안정적인 방법은 Object.keys()
를 사용하는 것입니다.
function isEmpty(obj) { return Object.keys(obj).length === 0; }
이 메서드는 객체의 자체 속성 이름의 배열을 반환합니다. 길이가 0이면 객체는 비어 있습니다.
예:
isEmpty({}); // true isEmpty({ a: 1 }); // false
방법 2: Object.entries()
사용
키-값 쌍의 배열을 반환하는 Object.entries()
를 사용할 수도 있습니다.
function isEmpty(obj) { return Object.entries(obj).length === 0; }
이 메서드는 Object.keys()
와 유사하게 유효하며 작동합니다.
방법 3: JSON 문자열 비교 (권장하지 않음)
일부 개발자는 JSON 직렬화를 사용하여 비교합니다.
function isEmpty(obj) { return JSON.stringify(obj) === "{}"; }
이 방법은 대부분의 경우에 작동하지만 성능 문제와 함수 또는 순환 참조와 같은 직렬화할 수 없는 속성의 잠재적인 에지 케이스로 인해 일반적으로 권장되지 않습니다.
방법 4: for...in
을 사용한 수동 반복
속성을 수동으로 반복할 수도 있습니다.
function isEmpty(obj) { for (let key in obj) { if (obj.hasOwnProperty(key)) { return false; } } return true; }
이 메서드는 안전하고 프로토타입 속성을 피하지만 더 장황합니다.
주의 사항: Null 및 비-객체
값이 실제로 객체이고 JavaScript에서 기술적으로 객체이기도 한 null
이 아닌지 확인하십시오.
function isEmpty(obj) { return obj && typeof obj === "object" && Object.keys(obj).length === 0; }
결론
최신 JavaScript에서 객체가 비어 있는지 확인하는 가장 안정적이고 간결한 방법은 Object.keys(obj).length === 0
을 사용하는 것입니다. 런타임 오류를 방지하려면 값이 실제로 객체이고 null
또는 다른 데이터 유형이 아닌지 항상 확인하십시오.
요약 표
방법 | 권장됨 | 참고 사항 |
---|---|---|
Object.keys().length | ✅ | 대부분의 사용 사례에 대해 간단하고 빠름 |
Object.entries().length | ✅ | 동등한 대안 |
JSON.stringify() | ❌ | 모든 입력에 대해 성능이 좋지 않거나 안전하지 않음 |
for...in 루프 | ✅ | 안전하지만 더 장황함 |
이러한 접근 방식을 이해함으로써 모든 JavaScript 환경에서 비어 있는 객체를 올바르게 처리하는 코드를 자신 있게 작성할 수 있습니다.
FAQs
예, 효율적이며 최신 JavaScript 엔진에서 널리 지원됩니다.
키를 평가하기 전에 유형 검사를 추가하여 null이 아닌 객체인지 확인해야 합니다.
직렬화할 수 없는 속성이 있는 객체에 대해 실패할 수 있으며 성능이 떨어집니다.
Leapcell입니다. Node.js 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무료로 무제한 프로젝트 배포
- 사용량에 대해서만 지불하십시오 — 요청, 요금이 없습니다.
탁월한 비용 효율성
- 유휴 요금 없이 종량제.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 고도의 동시성을 쉽게 처리하기 위한 자동 확장.
- 운영 오버헤드가 없으므로 구축에 집중하십시오.
설명서에서 자세히 알아보십시오!
X에서 팔로우하십시오: @LeapcellHQ