2017-11-14 7 views
0

私は主にLUAを使用しています。私はJavaScriptを使って友人の助けを借りて何かをしようとしていましたが、なぜこのループがコールスタックを超えているのか分かりません。javascriptループがコールスタックを超えています

var myVar; 
(function loop() { 
    for (var x = 0, ln = 3; x < ln; x++) { 
     myVar = setTimeout(function(i) { 
      console.log(i); 
     }, x * 333, x); 
     clearTimeout(myVar); 
    } 
    loop(); 
}()); 
+3

'てclearTimeout(myVarに):私はもっとこのようにそれを行うだろうか? – epascarello

+7

あなたは 'loop'の中から' loop'を呼び出して、無限の再帰につながります。 – Hamms

+0

ループ内からループを呼びます*無条件*で、無限再帰につながります –

答えて

0

プログレッシブ遅延で再帰的ループを作成しようとしているようです。 JSでは他の言語と同じように動作します。特定の条件でループを停止して再帰するエッジ条件を設定します。あなたはタイムアウトでそれを行うことができます。既に開始されたタイムアウトを停止しなければ、それをクリアする必要はありません。 ; - なぜ明確なそれよりもタイムアウトを作成する `<

var start = 0; 
 
var ln = 3; 
 

 
(function loop(i) { 
 
    if (i > ln) return // edge condition 
 
    setTimeout(() => { 
 
    console.log(i); 
 
    loop(i + 1); // recurse 
 
    }, i * 333, i); 
 
})(start);

関連する問題