1.問題背景:
接手的項目出現(xiàn)的這樣的寫法
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對象轉(zhuǎn)化為json字符串,再判斷該字符串是否為"{}"
let data = {};
console.log (JSON.stringify(data) == "{}");//true
console.log (JSON.stringify(data) ==="{}");//true
??2.for in 循環(huán)判斷 (return是在一個函數(shù)中起作用的)
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
?? 獲取到對象中的屬性名,存到一個數(shù)組中,通過數(shù)組的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