相等操作符会先转换操作数(通常称为强制转型),然后比较它们的相等性。在转换不同的数据类型时,相等操作符遵循下列基本规则:
1==true // true'1'==true //true
'1'== 1 // true
1== '1' // true
依据上面的第五条,我们可以知道,两个对象的指向一个不同的,故无论如何 {} =={} 一定是 fasle.
那我们要如何去判断一个对象是否为空呢?
法一:使用 for…in
let a = { name: '222' };
let a = {};function emptyObj(obj) {let result = true;for (var i in obj) {result = false}return result
}
console.log(emptyObj(a)) // fasle
console.log(emptyObj(b)) // true
方法二:使用JSON.stringify()
JSON 自带的 stringify() 方法,用于将 JavaScript 值转换为 JSON 字符串,通过判断给定的对象转换后的是否费‘{}’l来判断对象是否为空
let a = { name: '222' };
let b = {};function emptyObj(obj) {return JSON.stringify(obj) === '{}'
}
console.log(emptyObj(a)) // fasle
console.log(emptyObj(b)) //true
方法三:使用Object.keys(obj)
ES6 新增的方法 Object.keys():Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组。
如果我们的对象为空,他会返回一个空数组,如下:
let a = { name: '222' };
let b = {};function emptyObj(obj) {return Object.keys(obj).length === 0
}
console.log(emptyObj(a))
console.log(emptyObj(b))