簡體   English   中英

當我在其中添加“ if”時,JavaScript“ for”循環工作不正確。 我究竟做錯了什么?

[英]Javascript 'for' loop works incorrect when i put 'if' in it. What am i doing wrong?

var i;
function f_arrsmatch (array1,array2) {
    var error = 0;
    if(!array1 || !array2) { error++; }
    if(array1.length != array2.length) { error++; }
    for (i = 0; i < array1.length; i++) {
        if(array1[i] instanceof Array && array2[i] instanceof Array) {
            if(!f_arrsmatch(array1[i], array2[i])) { error++; }
        } else {
            if(array1[i] != array2[i]) { error++; }
        }
    }       
    return (error == 0);
}
var arr1 = [1,2,3];
var arr2 = [[3,1,2],[1,3,2],[3,2,1]];
for(i = 0; i < arr2.length; i++) {
    if(f_arrsmatch(arr1, arr2[i])) {
        alert('true');
    } else {
        alert('false');
    }
}

它僅顯示1次帶有“ false”文本的警報,但是如果運行此命令:

var i;
function f_arrsmatch (array1,array2) {
    var error = 0;
    if(!array1 || !array2) { error++; }
    if(array1.length != array2.length) { error++; }
    for (i = 0; i < array1.length; i++) {
        if(array1[i] instanceof Array && array2[i] instanceof Array) {
            if(!f_arrsmatch(array1[i], array2[i])) { error++; }
        } else {
            if(array1[i] != array2[i]) { error++; }
        }
    }       
    return (error == 0);
}
var arr1 = [1,2,3];
var arr2 = [[3,1,2],[1,3,2],[3,2,1]];
for(i = 0; i < arr2.length; i++) {
    alert('something');
}

然后瀏覽器會用文字“某物”發出3次警報。 js這么奇怪可以嗎,或者我做錯了嗎?

在函數f_arrsmatch ,將重新評估全局變量i。 在調用f_arrsmatch ,將i分配為3。然后進入循環的下一步驟,條件i < arr2.length為false,因此循環結束,因此僅調用alert一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM