for (i=0;i<channelName.length;i++) {
if (channelName[i]=="channel"||channelName[i]=="user") {
checkUserDuplicate(channelName[i]);
}
}
此循環在所有瀏覽器中導致「內存不足」崩潰。誰能看到爲什麼?它似乎在IF語句崩潰,然後以某種方式導致無限循環。JS循環正在循環和崩潰的瀏覽器?
如果您想知道代碼的作用,它會在未定義長度的數組中找到關鍵字「channel」和「user」,然後在下一個位置獲取該字符串。
任何幫助將不勝感激,因爲我一直坐在這裏困惑了2個小時。
編輯:頻道名稱就像http://www.youtube.com/user/username
這個網址的功能是:
function checkUserDuplicate(channelName) {
var idarray=[];match=0;$('.channels').each(function(){idarray.push(this.id)});
for (i=0;i<idarray.length;i++) {
var current=channelName.toLowerCase();compare=idarray[i].toLowerCase();
if (current==compare) {callError(channelName+" already exists in this collection");match=1;}
} if (match==0) {checkExists(channelName);}
}
這是一個爛攤子:)
什麼的'checkUserDuplicate'的代碼?我猜'我'是一個全局變量,你正在探討它在這個函數中的價值嗎?確切地說,請聲明你的變量。 – Teemu
不符合當前顯示的內容。 'channelName'的價值和多大? 'checkUserDuplicate'做了什麼(*我假設這是循環以及可能導致無限循環*)? –
@Teemu對不起,不,它不是一個全局變量。代碼非常長。 – LewisHarris