一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

JavaScript 如何判断对象是否为空

时间:2026-07-11 11:11:47 编辑:袖梨 来源:一聚教程网

判断对象是否为空最可靠的方法是Object.keys(obj).length === 0,需先检查obj不为null且为非数组的对象,其他方法如JSON.stringify或for...in存在性能或兼容性问题。

判断一个对象是否为空,核心是看它是否拥有可枚举的自身属性。最可靠、兼容性好且语义清晰的方式是使用 Object.keys(obj).length === 0

用 Object.keys() 检查自身可枚举属性

这是最常用也最推荐的方法。它只返回对象自身的、可枚举的属性名数组,不包括原型链上的属性或不可枚举属性(如 constructor)。

  • 空对象 {} 返回空数组 [],长度为 0
  • 含属性的对象(如 {a: 1})返回非空数组,长度大于 0
  • 注意:该方法对 nullundefined 会报错,使用前建议先做类型检查

处理 null 和 undefined 的安全写法

实际开发中,变量可能尚未初始化或被设为 null,直接调用 Object.keys 会抛出错误。可以这样加固:

  • obj !== null && typeof obj === 'object' && Object.keys(obj).length === 0
  • 更简洁的写法:obj && typeof obj === 'object' && !Array.isArray(obj) && Object.keys(obj).length === 0(同时排除数组)

其他方法的适用场景与局限

有些方法看似可行,但存在边界问题:

立即学习“Java免费学习笔记(深入)”;

  • JSON.stringify(obj) === '{}':能工作,但性能较差,且对含有 undefined、函数、Symbol 属性的对象会丢失信息或报错
  • for...in 循环 + hasOwnProperty:可行,但代码稍长,易漏掉 hasOwnProperty 判断导致误判原型属性
  • Object.entries(obj).length === 0:效果同 Object.keys,ES2017+ 支持,语义更明确(键值对维度),但兼容性略低

简单封装成工具函数

如果项目中多次用到,可封装为复用函数:

function isEmptyObject(obj) {
  return obj !== null
    && typeof obj === 'object'
    && !Array.isArray(obj)
    && Object.keys(obj).length === 0;
}

热门栏目