deepEqual函數應該在2個值中查看它們是否完全相同。第一次和第二次測試的結果與預期相符。我在合併遞歸調用的方式上可能有什麼問題嗎?Javascript對象中的值
function deepEqual(obj1, obj2) {
if (typeof obj1 == 'object' && typeof obj1 !== null && typeof obj2 == 'object' && typeof obj2 !== null) {
if (obj1.length != obj2.length) {return false;}
for (var prop in obj1) {
if (typeof obj1[prop] == 'object') {deepEqual(obj1[prop], obj2[prop]);}
if (obj1[prop] != obj2[prop]) {return false;}
}
return true;
} else if (obj1 === obj2) {return true;}
else {return false;}
}
var obj = {here: {is: "an"}, object: 2};
console.log(deepEqual(obj, obj));
// → true -> true
console.log(deepEqual(obj, {here: 1, object: 2}));
// → false -> false
console.log(deepEqual(obj, {here: {is: "an"}, object: 2}));
// → true -> false
爲什麼不使用== =? – SPlatten
@SPlatten它不適用於對象。它只是測試參考平等。 – 4castle
@SPlatten:OP顯然試圖測試等同性,而不是身份。 –