老师,我写深度判断的时候
//值类型判断 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,为什么?