老师,我写深度判断的时候
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | //值类型判断 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,但是又走了一遍
1 2 3 | if (!res) { return false } |
最后结果是false,为什么?