JavaScript中判断对象为null或属性为空的方法
作者:函数茶馆时间:2026-10-28 14:25:58浏览:387
本文详解JavaScript中null与undefined的区别,并介绍判断对象是否为null及检测空对象(不含可读属性)的两种方法。通过示例代码展示如何区分{}与null,以及是否检测原型链属性的差异,帮助开发者准确处理对象状态。
null与undefined的区别
首先说明null与undefined的区别:
对已声明但未初始化的变量以及未声明的变量执行typeof操作,结果均返回"undefined"。
null代表一个空对象指针,使用typeof操作符会返回"object"。
通常不建议将变量显式设置为undefined,但对于即将保存对象的变量,应明确将其赋值为null。
var bj;
alert(bj); //"undefined"
bj = null;
alert(typeof bj); //"object"
alert(bj == null); //true
bj = {};
alert(bj == null); //false
以下两个函数由邓师兄提供,在此表示感谢。
判断对象是否为空的方法
/*
* 检测对象是否是空对象(不包含任何可读属性)。
* 方法既检测对象本身的属性,也检测从原型继承的属性(因此没有使hasOwnProperty)。
*/
function isEmpty(obj)
{
for (var name in obj)
{
return false;
}
return true;
};
此处讨论的空对象是指{}还是null?我编写了一个测试用例进行验证。
var a = {};
a.name = 'realwall';
console.log(isEmpty(a)); //false
console.log(isEmpty({})); //true
console.log(isEmpty(null)); //true
//注意参数为null时无语法错误哦,即虽然不能对null空指针对象添加属性,但可以使用for in 语句
?
/*
* 检测对象是否是空对象(不包含任何可读属性)。
* 方法只既检测对象本身的属性,不检测从原型继承的属性。
*/
function isOwnEmpty(obj)
{
for(var name in obj)
{
if(obj.hasOwnProperty(name))
{
return false;
}
}
return true;
};
{}与null的区别在于:
这一点非常重要。
var a = {};
var b = null;
a.name = 'realwall';
b.name = 'jim'; //这里会报错,b为空指针对象,不能像普通对象一样直接添加属性。
b = a;
b.name = 'jim'; //此时 a 和 b 指向同一个对象。a.name, b.name 均为'jam'
作者最新文章
JS大数值转字符串出现科学计数法怎么办
2026-11-05 17:09:21
JS split切割后出现空字符串怎么过滤
2026-11-05 16:00:30
在 React 或 Vue 项目中封装使用 JS 节流防抖
2026-11-05 15:27:29
JavaScript中怎么将带小数的字符串转为整数?
2026-11-05 14:32:38
怎么用JavaScript策略模式重构电商促销计算逻辑?
2026-11-05 14:01:09
