空对象{}是真值,因JavaScript中仅false、0、""、null、undefined、NaN为假值,其余包括{}均为真值;判断对象是否为空需用Object.keys(obj).length === 0等方法,而非Boolean转换。

在 JavaScript 中,空对象 {} 本身就是真值(truthy),不需要额外“强制转换”来让它变成真——它默认就是 true。
为什么空对象是真值?
JavaScript 的布尔强制转换规则中,只有以下几个值是假值(falsy):
false-
0(包括-0和0n) -
""(空字符串) nullundefinedNaN
所有其他值,包括 {}、[]、new Date()、function(){} 等,都是真值(truthy)。所以:
console.log({} ? "真" : "假"); // "真"
常见误解:想把空对象当假值用?
很多人实际想问的是:“怎么判断一个对象是否为空?”——这和 Boolean 强制转换无关,而是业务逻辑判断。空对象 {} 是真值,但你可以手动检查它有没有自有属性:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 用
Object.keys(obj).length === 0 - 用
Object.getOwnPropertyNames(obj).length === 0(含不可枚举属性) - 用
JSON.stringify(obj) === "{}"(仅适用于可序列化、无函数/undefined/循环引用的对象)
console.log(Boolean(obj)); // true
console.log(Object.keys(obj).length === 0); // true(确实为空)
注意:不要混淆“空”和“假”
JavaScript 中的“空”(如空对象、空数组)不等于“假”。这是语言设计决定的:
-
[]是真值 →Boolean([]) === true -
{}是真值 →Boolean({}) === true - 但
Array.isArray([])和obj.constructor === Object才能确认类型,不是靠真假判断
总结:该用什么就用什么
如果只是做条件判断,直接写 if (obj) { ... } 即可——它会按规范转为布尔值,而 {} 自然进入 if 分支;如果要区分“非空对象”和“空对象”,就得显式检查键名数量或使用工具函数,不能依赖 Boolean()。

















