JavaScript中判断对象为null或属性为空的方法

作者:函数茶馆

时间:2026-10-28

浏览:386

本文详解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'

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章