js 定时器setTimeout无法调用局部变量的解决办法_javascript技巧
javascript中定时器setTimeout的用法一般如下,调用beginrotate之后就进入定时执行rotateloop的一个过程,如下代码:
var angle = 0;
function rotateloop() {
if (angle angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
function beginrotate() {
//do something
//......
setTimeout("rotateloop()", 100);
}
这段代码有一个问题,就是产生了一个全局变量angle,这显然不是好的编程习惯,所以我们想到使用内嵌函数的方式,将代码改成如下:
function beginrotate() {
var angle = 0;
function rotateloop() {
if (angle angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
//do something
//......
setTimeout("rotateloop()", 100);
}
这样子改了之后,发现javascript报错了,rotateloop找不到,显然setTimeout没有找到rotateloop这个局部内嵌函数,这里只要稍微改一下就可以解决这个问题了,代码如下:
function beginrotate() {
var angle = 0;
function rotateloop() {
if (angle angle++;
//use angle
//......
setTimeout(rotateloop, 100);
}
}
//do something
//......
setTimeout(rotateloop, 100);
}
只需要将setTimeout的第一个参数改成函数对象,而不是字符串,就可以了。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Der Unterschied zwischen lokalen C++-Variablen und globalen Variablen: Sichtbarkeit: Lokale Variablen sind auf die definierende Funktion beschränkt, während globale Variablen im gesamten Programm sichtbar sind. Speicherzuweisung: Lokale Variablen werden auf dem Stapel zugewiesen, während globale Variablen im globalen Datenbereich zugewiesen werden. Geltungsbereich: Lokale Variablen befinden sich innerhalb einer Funktion, während globale Variablen im gesamten Programm vorhanden sind. Initialisierung: Lokale Variablen werden beim Aufruf einer Funktion initialisiert, während globale Variablen beim Programmstart initialisiert werden. Neuerstellung: Lokale Variablen werden bei jedem Funktionsaufruf neu erstellt, während globale Variablen nur beim Programmstart erstellt werden.

Der Unterschied zwischen settimeout und setInterval: 1. Triggerzeit, settimeout ist einmalig, es führt die Funktion einmal aus, nachdem die Verzögerungszeit eingestellt wurde, während setinterval sich wiederholt, es wird die Funktion wiederholt im festgelegten Zeitintervall ausführen , settimeout wird nur einmal ausgeführt und setinterval wird wiederholt ausgeführt, bis es abgebrochen wird.

C++ ist eine objektorientierte Programmiersprache und ihre Flexibilität und Leistungsfähigkeit stellen für Programmierer oft eine große Hilfe dar. Doch gerade aufgrund seiner Flexibilität lassen sich diverse kleine Fehler bei der Programmierung nur schwer vermeiden. Einer der häufigsten Fehler besteht darin, dass eine Funktion, wenn sie einen Zeiger oder eine Referenz zurückgibt, keine lokale Variable oder kein temporäres Objekt zurückgeben kann. Wie also mit diesem Problem umgehen? In diesem Artikel werden die relevanten Inhalte im Detail vorgestellt. Die Ursache des Problems liegt darin, dass in der Sprache C++ lokale Variablen und temporäre Objekte während der Ausführung der Funktion dynamisch zugewiesen werden. Wenn die Funktion endet, sind diese lokalen und temporären Variablen

Golang ist eine stark typisierte Programmiersprache mit den Merkmalen Effizienz, Einfachheit und Parallelität und wird daher nach und nach von immer mehr Entwicklern bevorzugt. Bei der Entwicklung von Golang sind globale Variablen und lokale Funktionsvariablen häufig mit Datenwettbewerbsproblemen verbunden. In diesem Artikel wird das Datenwettbewerbsproblem globaler Variablen und lokaler Variablen in Golang-Funktionen aus der Perspektive der tatsächlichen Codierung analysiert. 1. Datenkonkurrenz um globale Variablen Auf globale Golang-Variablen kann in allen Funktionen zugegriffen werden, sofern kein strenges Design und keine strenge Codierung durchgeführt werden

Inferenz lokaler Variablentypen in Java10: So verwenden Sie das Schlüsselwort var in der foreach-Schleife Einführung: Java10 ist eine wichtige Version nach Java9, die viele neue Funktionen und Verbesserungen einführt. Eine der mit Spannung erwarteten Funktionen ist die Inferenz lokaler Variablentypen. In Java10 können wir das Schlüsselwort var verwenden, um lokale Variablen zu deklarieren und den Compiler basierend auf dem Ausdruck auf der rechten Seite automatisch auf den Variablentyp schließen zu lassen. In diesem Artikel erfahren Sie, wie Sie es verwenden

Lokale Variablentyp-Inferenz in Java10: So verwenden Sie das Schlüsselwort var, um Code zu vereinfachen. Einführung: In Java10 wird die Funktion der lokalen Variablentyp-Inferenz eingeführt. Durch die Verwendung des Schlüsselworts var kann der Code-Schreibprozess vereinfacht werden. In diesem Artikel wird die Verwendung des Schlüsselworts var vorgestellt und seine Wirkung auf die Vereinfachung des Codes anhand von Beispielcode demonstriert. 1. Was ist die Inferenz lokaler Variablentypen? Typinferenz für lokale Variablen bedeutet, dass Sie beim Deklarieren lokaler Variablen das Schlüsselwort var anstelle einer expliziten Typdeklaration verwenden können. Der Compiler wird es ausdrücken

Lokale Variablen können in Java innerhalb von Methoden, Codeblöcken, Konstruktoren usw. deklariert werden. Lokale Variablen werden erstellt, wenn die Programmsteuerung eine Methode, einen Codeblock, einen Konstruktor usw. betritt, und werden zerstört, wenn die Programmsteuerung eine Methode, einen Codeblock, einen Konstruktor usw. verlässt. In Java haben lokale Variablen keinen Standardwert. Dies bedeutet, dass sie vor der ersten Verwendung der Variablen deklariert und zugewiesen werden können, andernfalls gibt der Compiler einen Fehler aus. Beispiel publicclassLocalVariableTest{ publicvoidprint(){ &am

Inferenz lokaler Variablentypen in Java10: So verwenden Sie das Schlüsselwort var in Lambda-Ausdrücken Einführung: Java10 führt eine neue Funktion der Inferenz lokaler Variablentypen ein, die es uns ermöglicht, das Schlüsselwort var zu verwenden, um bei der Deklaration auf den Typ einer lokalen Variablen zu schließen. Während diese Funktion in den meisten Fällen möglicherweise nicht erforderlich ist, kann sie in einigen Fällen die Lesbarkeit und Einfachheit des Codes verbessern. Dieser Artikel konzentriert sich auf die Verwendung des Schlüsselworts var in Lambda-Ausdrücken, um die Inferenz lokaler Variablentypen zu implementieren.
