[英]Why does this function return only true, since there is no else statement to make it return false under a non true condition?
[英]Why does this function never return false from the else part
我將console.log引入代碼中,以確保代碼中看到的數組和數組元素
function testArrayEquality(array1, array2) { for (var i = 0; i < array1.length; i++) { if (typeof array1[i] === "object" && typeof array2[i] === "object") { console.log(array1[i], array2[i]); testArrayEquality(array1[i], array2[i]); } else { if (array1[i] !== array2[i]) { console.log(array1[1], array2[i]); return false; } } } return true; } var array1 = [ [3, 4], [4, 5] ]; var array2 = [ [3, 4], [4, 6] ]; testArrayEquality(array1, array2);
我認為正在發生的事情是,您僅用最頂層的數組測試了此功能。 如果其中一個嵌套數組有錯誤,它將在遞歸循環中返回false,但“忘記”該false,因為您對遞歸函數調用的返回不做任何事情。 您需要做的是:
function testArrayEquality(array1,array2) {
for(var i = 0; i < array1.length; i++){
if(typeof array1[i] === "object" && typeof array2[i] ===
"object") {
console.log(array1[i], array2[i]);
recursive = testArrayEquality(array1[i],array2[i]);
if (recursive === false) {
return false;
}
}
else {
if(array1[i] !== array2[i]) {
console.log(array1[1],array2[i]);
return false;
}
}
}
return true;
}
var array1 = [[3,4],[4,5]];
var array2 = [[3,4],[4,6]];
testArrayEquality(array1,array2);
這樣,如果您必須在較低級別上使用不同的數組,則將錯誤get傳遞給原始函數調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.