空值判断的重要性
一、【示例1】
if([]) {
console.log('true');
} else {
consoel.log('false');
}
// res:true
if({}) {
console.log('true');
} else {
consoel.log('false');
}
// res:true
1、看这段代码,不知道有没有小伙伴会认为输出false,以上对象和数组虽然为空,但是会被转换为true,所以在写一些判断条件时候要格外注意。
空值判断
空数组判断
一、数组为空很简单,通过上面的类型判断是数组类型,然后它的length>0即可
空对象判断
Object.getOwnPropertyNames()
一、使用Object.getOwnPropertyNames()。返回值是对象中属性名组成的数组
var obj = {}
Object.getOwnPropertyNames(obj).length === 0; // true
Object.keys() (推荐)
一、使用Object.keys()。ES6的新方法,返回值同样是属性名组成的数组
var obj = {}
Object.keys(obj).length === 0; // true
for…in… 循环判断
var obj = {};
function judgeObj(obj) {
for(let key in obj) {
return false
}
return true
}
judgeObj(obj); // true
json 对象转换为字符串(不推荐)
一、将json对象转换为字符串,然后比较该字符串与”{}”是否相等
var obj = {};
var a = JSON.stringify(obj);
a === "{}"; // true
// a === "{ }"; // false
// a === {}; // false
直接使用对象属性判断(不推荐)
一、前提是要确定如果obj不为空,一定会包含name属性
var obj = {};
obj && obj.name ? '不为空' : '为空'; //