咨询公司收费标准,泉州seo网站推广,做建材上哪个网站比较好,手机CPA网站建设源码修改首先说下null与undefined区别#xff1a;
对已声明但未初始化的和未声明的变量执行typeof#xff0c;都返回undefined。
null表示一个空对象指针#xff0c;typeof操作会返回object。
一般不显式的把变量的值设置为undefined#xff0c;但null相…首先说下null与undefined区别
对已声明但未初始化的和未声明的变量执行typeof都返回undefined。
null表示一个空对象指针typeof操作会返回object。
一般不显式的把变量的值设置为undefined但null相反对于将要保存对象的变量应明确的让该变量保存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 做项目时遇到一个问题判断一个对象是否为空对象发现这样判断可以上代码
1. 代码1
var a {};
if(!a){ console.log(1);}
else if(a null) { console.log(2);}
else { console.log(3);}结果为3
2. 代码2
var b {};
if(b {}){ console.log(4);}
if(b {}) { console.log(5);}
if(typeof(b) object) { console.log(6);}结果为6
3. 代码3
var c {};
if(JSON.stringify(c) {}){ console.log(7);}结果为 7
所以可以使用代码3的方法判断对象是否为空对象{}
如果对象不为空并且知道对象不为空时某个属性(比如{id:111})一定存在则可以里这样判断
4. 代码4
var d {};
var e {id:111};
if(d.id){ console.log(8);}
if(e.id){ console.log(9);}结果为9
小结显然代码3的判断方式比较“强势”但效率明显不如代码4的判断方法
补充
function checkNullObj (obj) {return Object.keys(obj).length 0
}