Heim Web-Frontend js-Tutorial js 定时器setTimeout无法调用局部变量的解决办法_javascript技巧

js 定时器setTimeout无法调用局部变量的解决办法_javascript技巧

May 16, 2016 pm 05:11 PM
settimeout 局部变量

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的第一个参数改成函数对象,而不是字符串,就可以了。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der Unterschied zwischen lokalen Variablen und globalen Variablen einer C++-Funktion? Was ist der Unterschied zwischen lokalen Variablen und globalen Variablen einer C++-Funktion? Apr 19, 2024 pm 03:42 PM

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.

Was ist der Unterschied zwischen settimeout und setinterval? Was ist der Unterschied zwischen settimeout und setinterval? Aug 15, 2023 pm 02:06 PM

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++-Syntaxfehler: Wenn eine Funktion einen Zeiger oder eine Referenz zurückgibt, kann sie keine lokale Variable oder kein temporäres Objekt zurückgeben. Was soll ich tun? C++-Syntaxfehler: Wenn eine Funktion einen Zeiger oder eine Referenz zurückgibt, kann sie keine lokale Variable oder kein temporäres Objekt zurückgeben. Was soll ich tun? Aug 22, 2023 am 09:22 AM

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

Datenwettbewerbsanalyse globaler Variablen und lokaler Variablen von Golang-Funktionen Datenwettbewerbsanalyse globaler Variablen und lokaler Variablen von Golang-Funktionen May 21, 2023 am 08:19 AM

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 Java 10: So verwenden Sie das Schlüsselwort var in der foreach-Schleife Inferenz lokaler Variablentypen in Java 10: So verwenden Sie das Schlüsselwort var in der foreach-Schleife Jul 29, 2023 pm 03:21 PM

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

Inferenz lokaler Variablentypen in Java 10: So vereinfachen Sie Ihren Code mit dem Schlüsselwort var Inferenz lokaler Variablentypen in Java 10: So vereinfachen Sie Ihren Code mit dem Schlüsselwort var Jul 29, 2023 pm 07:32 PM

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

Was ist der Standardwert lokaler Variablen in Java? Was ist der Standardwert lokaler Variablen in Java? Aug 20, 2023 pm 09:41 PM

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 Java 10: So verwenden Sie das Schlüsselwort var im Lambda-Ausdruck Inferenz lokaler Variablentypen in Java 10: So verwenden Sie das Schlüsselwort var im Lambda-Ausdruck Aug 02, 2023 pm 04:25 PM

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.

See all articles