JavaScript 的真值与假值 | 如何判断一个对象为空

JavaScript 的真值与假值 | 如何判断一个对象为空

前置知识

  1. JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,例如条件语句if||&&等。
  2. JavaScript里的假值只有falsenullundefined、空字符、0NaN

可能{}和[]是引用类型,即使内容为空,但是地址值仍在存在?

如何判断一个对象为空

  • JSON.stringify 将对象转化为字符串,在判断是否是对对象JSON.stringify(obj) === '{}'
  • Object.keys({}).length ===0 Object.keys 不会遍历不可枚举的属性和Symbol属性
  • Reflect.ownKeys(obj)===0 (推荐) Reflect.ownKeys会遍历不可枚举的属性和Symbol属性

对象的遍历方法如Object.keys等介绍文章:https://blog.csdn.net/qq_41370833/article/details/132303942

判断了边界情况的判空方法

边界情况1举例

//常见的内置构造函数
new Object();

new String();
new Number();
new Boolean();
new Array();
new RegExp();
new Function();
new Date();
new Error();

function badEmptyCheck(value) {
    return Object.keys(value).length === 0;
}
badEmptyCheck(new Object()); // true
badEmptyCheck(new String()); // true
badEmptyCheck(new Number()); // true
badEmptyCheck(new Boolean()); // true
badEmptyCheck(new Array()); // true
badEmptyCheck(new RegExp()); // true
badEmptyCheck(new Function()); // true
badEmptyCheck(new Date()); // true
badEmptyCheck(new Error();); // true

解决办法
对象隐式原型的值=对应构造函数的显式原型的值

function goodEmptyCheck(value) {
    return Object.keys(value).length === 0 && value.constructor === Object;
}

边界情况2举例

Object.keys(null).length === 0;   // TypeError

Object.keys(undefined).length === 0;  // TypeError

解决办法

function goodEmptyCheck(value) {
	// 增加判断不为空
    return value && Object.keys(value).length === 0 && value.constructor === Object;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值