In diesem Artikel werden hauptsächlich die relevanten Kenntnisse über JS-Rekursion und Timer vorgestellt. Es hat einen sehr guten Referenzwert. Schauen wir es uns mit dem Editor unten an.
Rekursion: Es wird gebildet, wenn eine Funktion sich selbst aufruft all Ein Beispiel:
Function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1); } }
var anotherFactorial = factorial; factorial = null; alert(anotherFactorial)// 出错
function factorial (num){ if(num){ return 1; }else{ return num*arguments.callee; } }
arguments.callee Vorteile:
1. Es kann sicherstellen, dass es keine Probleme gibt, egal wie Sie die Funktion aufrufen. Daher ist es beim Schreiben rekursiver Funktionen immer sicherer, arguments.callee zu verwenden als Funktionsnamen
Hinweis: Im strikten Modus ist dies ungültig und ein Fehler wird gemeldet
Schreiben im strengen Modus:
var factorial = (function f(){ if(num<1){ return 1; }else{ return num*f(num-1); } })
2. In Kombination mit verwenden Timer:
JS ist eine Single-Threaded-Sprache, ermöglicht jedoch die Planung der Codeausführung zu bestimmten Zeitpunkten durch Festlegen von Timeout-Aufrufen und -Intervallen. Ersteres führt den Code nach einer bestimmten Zeit aus, während letzteres den Code zu jeder angegebenen Zeit ausführt.
Parameter: auszuführender Code und Zeit in Millisekunden//不建议传字符串,传递字符串可能导致性能损失 setTimeout("alter('hello word')", 1000); //推荐方式 setTimeout(function(){ alter("Hello world"); },1000) setInterval(function(){ alter("Hello world"); },1000)
<; 🎜 >In praktischen Anwendungen:
Die Verwendung von Timeout-Anrufen zur Simulation intermittierender Anrufe ist der beste Modus. In einer Entwicklungsumgebung werden echte intermittierende Anrufe selten verwendet, da letztere intermittierende Anrufe gestartet werden können zwischen vorherigen intermittierenden Anrufen.
Sie können dies vermeiden, wenn Sie einen Timeout-Aufruf wie oben verwenden. Verwenden Sie also keine intermittierenden Aufrufe.
var num = 0, max = 0; function incrrmentNumber{ num++; if(num < max){ setTimeout(incrrmentNumber,500); }else{ alert("Done"); } } setTimeout(incrrmentNumber,500);
Weitere Artikel zu JS-Rekursion und Timer-Instanzanalyse finden Sie auf der chinesischen PHP-Website!