由於考慮了不少種狀況,最後簡寫爲這個版本,暫時能想到的可能性都寫出了數組
function isEqual(obj1, obj2) { if (typeof obj1 === typeof obj2) { if (typeof obj1 === 'object') { const obj1Keys = Object.keys(obj1) const obj2Keys = Object.keys(obj2) if (obj1Keys.length === obj2Keys.length) { if (obj1 instanceof Array === obj2 instanceof Array || obj1 instanceof Object === obj2 instanceof Object) { for (let i in obj1) { const res = isEqual(obj1[i], obj2[i]) if (!res) { console.log('走了對象或者數組內部循環不相同的錯誤,具體錯誤看上一個報錯信息') return false } } return true } else { console.log('走了兩個引用類型不一樣的錯誤 || 走了兩個引用類型是function的錯誤') return false } } else { console.log('走了兩個引用類型的長度不一樣的錯誤') return false } } else { if (obj1 === obj2) { return true } else { console.log('走了兩個基本類型數據不相同的錯誤') return false } } } else { console.log('走了兩個數據類型都不相同的錯誤') return false } }