1.问题背景:
接手的项目出现的这样的写法
res === {} 来判断空对象,
当时会意了,但是越想越不对...
2.常见的 number、str、array、obj 以此用 == 和 ===
1. number
let c = 0;
console.log(c == 0);//true
console.log(c === 0);//true
2. str
let a = ' ';
console.log(a == ' ');//true
console.log(a === ' ');//true
3. array
let d = []
console.log(d == [])//false
console.log(d === [])//false
4. obj
let b = {} ;
console.log(b == {});//false
console.log(b === {});//false
5. str与number
let b = '0' ;
console.log(b == 0);//true
console.log(b === 0);//false
3. 证明 对象 为空对象的方法
1 .将json对象转化为json字符串,再判断该字符串是否为"{}"
let data = {};
console.log (JSON.stringify(data) == "{}");//true
console.log (JSON.stringify(data) ==="{}");//true
2.for in 循环判断 (return是在一个函数中起作用的)
let obj = {};
let i = function() {
for(let key in obj) {
return false;
}
return true;
}
console.log(i()) //true
3.jquery的isEmptyObject方法
//此方法是jquery将2方法(for in)进行封装,使用时需要依赖jquery
4.Object.getOwnPropertyNames()方法,此方法不兼容ie8
获取到对象中的属性名,存到一个数组中,通过数组的length来判断
let data = {};
let arr = Object.getOwnPropertyNames(data);
console.log(arr.length == 0);//true
5.使用es6的Object.keys()方法,与4方法类似
const data = { name: "Lily", age: 30, tel: "132xxxxxxxx", address: { city : "beijing", district: "haidian", detail: "dddddddd"} };
let arr = Object.keys(data);
console.log(arr.length == 0);//true