![](/img/trans.png)
[英]This JavaScript works on chrome but not on Safari and Firefox, what am I doing wrong?
[英]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.