2017-02-12 7 views
0
for (i=0;i<channelName.length;i++) { 
     if (channelName[i]=="channel"||channelName[i]=="user") { 
     checkUserDuplicate(channelName[i]); 
    } 
} 

このループは、すべてのブラウザで「メモリ不足」クラッシュを引き起こしています。なぜ誰かが見ることができますか?これは、IF文でクラッシュし、何とか無限ループを引き起こしているようです。JSループがループしてブラウザをクラッシュさせていますか?

コードが何をしているのか不思議であれば、定義されていない長さの配列でキーワード "channel"と "user"を見つけ、その文字列を次の位置に取得します。

私がここに座って2時間困惑しているので、何か助けがあれば幸いです。

EDIT:CHANNELNAMEはhttp://www.youtube.com/user/username

のようなURLが、これは関数である:

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);} 

}

それはめちゃくちゃだ:)

+2

'checkUserDuplicate'のコードは何だろうか?私は 'i'はグローバル変数であり、その関数でその価値を追求していると思いますか?正確には、変数を宣言してください。 – Teemu

+1

現在表示されているものではありません。どのような値とどのくらいの大きさは 'channelName'ですか? 'checkUserDuplicate'は何をするのですか(*私はそれがループしていると仮定しており、おそらく無限ループを引き起こしています*)? –

+0

@ Teemu申し訳ありませんが、それはグローバル変数ではありません。コードは非常に長いです。 – LewisHarris

答えて

0

checkUserDuplicate機能では、それは量をカウントクラスの範囲内のDIVのクラスまたはDIVがない場合、カウントは0になり、forループに渡され、再帰的ループが作成されます。

1

forループでは、var i = 0;を指定しないと、グローバルにアクセスできます。そしてあなたの他の関数では、iの値を変更して、予想通りにインクリメントしないので、無限ループで終了します。それはかなり厄介だから

は申し訳ありませんが、私は、コードを読んでいないが、それは理由

+0

厄介なコードは残念です。私はちょうどこのように凝縮して書きますが、理由はありませんが、私はそれが何を意味するか知っている限り:D – LewisHarris

+0

@LewisHarris so ..その理由はありますか? – LYu

+0

いいえ、問題はidArray.lengthが== 0だったため、無限ループが発生しました。私はidArrayがコードのこのセクションが実行された後に配列の日付を取得していることに気づいていませんでした。 – LewisHarris

関連する問題