空值判断的重要性
一、【示例1】
if([]) {console.log('true');} else {consoel.log('false');}// res:trueif({}) {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 ? '不为空' : '为空'; //
