老师,我写深度判断的时候
//值类型判断
function isObject(obj){
return typeof obj === 'object' && obj !== null
}
function isEqual(obj1,obj2){
//值类型判断
if (!isObject(obj1) || !isObject(obj2)) {
return obj1 === obj2
}
//传入obj相同
if (obj1 === obj2) {
return true
}
//递归判断
const obj1Key = Object.keys(obj1)
const obj2Key = Object.keys(obj2)
//先判断长度
if (obj1Key.length !== obj2Key.length) {
return false
}
for (let key in obj1) {
let res = isEqual(obj1[key],obj2[key])
if (!res) {
return false
}
}
// return true
}
//测试
const obj1 = {
a:100,
b:{
x:100,
y:200
}
}
const obj2 = {
a:100,
b:{
x:100,
y:200
}
}
console.log(isEqual(obj1,obj2))把return true注掉,我觉得结果应该是undefined,但是控制台返回的是false,我打断点调试,最后一圈key的确是undefined,函数返回也是undefined,但是又走了一遍
if (!res) {
return false
}最后结果是false,为什么?