Dieses Mal bringe ich Ihnen JS-Verschlüsse und Timer Was sind die Vorsichtsmaßnahmen bei der Verwendung von JS-Verschlüssen und Timern?
Was ist ein Abschluss? Was macht er?
Ein Abschluss ist eine Funktion, die die internen Variablen anderer Funktionen lesen kann.
Funktion: 1. Sie können die Variablen innerhalb der Funktion lesen. 2. Die Werte dieser Variablen im Speicher behalten.
Welche Rolle spielt setTimeout 0?
Die JS-Ausführung basiert auf einem einzelnen Thread. Dies bedeutet, dass bei der Ausführung eines Codeabschnitts andere Codes in die Warteschlange gestellt werden, um zu warten, und nachfolgende Codes ausgeführt werden, sobald der Thread frei ist. Wenn im Code ein setTimeout festgelegt ist, fügt der Browser den Code zum entsprechenden Zeitpunkt in die Aufgabenwarteschlange ein. Wenn diese Zeit auf 0 gesetzt ist, bedeutet dies, dass er sofort in die Warteschlange eingefügt, aber nicht ausgeführt wird Sie müssen immer noch warten, bis der vorherige Code abgeschlossen ist (tatsächlich gibt es eine Verzögerung, je nach Browser beträgt sie 16 ms oder 4 ms). Daher garantiert setTimeout nicht die Ausführungszeit. Ob die Ausführung rechtzeitig erfolgt, hängt davon ab, ob der JavaScript-Thread überfüllt oder inaktiv ist.
Code
Was ist die Ausgabe des folgenden Codes? Ändern Sie den Code so, dass fnArr[i]() i ausgibt. Verwenden Sie mehr als zwei Methoden
var fnArr = []; for (var i = 0; i < 10; i ++) { fnArr[i] = function(){ return i; }; } console.log( fnArr3 ); //
Code:
Methode eins:
var fnArr = []; for (var i = 0; i < 10; i ++) { fnArr[i] = (function(){ var index = i; var fn = function(){ return index } return fn }()); } console.log( fnArr3 ); //
Methode zwei:
var fnArr = []; for (var i = 0; i < 10; i ++) { (function(n){ fnArr[i] = function(){ return n; } })(i) }; console.log( fnArr3 )
Verwenden Sie einen Verschluss, um ein Autoobjekt zu kapseln. Sie können den Auto-Status auf folgende Weise erhalten
var Car = //todo; Car.setSpeed(30); Car.getSpeed(); //30 Car.accelerate(); Car.getSpeed(); //40; Car.decelerate(); Car.decelerate(); Car.getSpeed(); //20 Car.getStatus(); // 'running'; Car.decelerate(); Car.decelerate(); Car.getStatus(); //'stop'; //Car.speed; //error
Code:
var Car = (function(){ var speed; function setSpeed(n){ speed = n } function getSpeed(){ return console.log(speed); } function accelerate(){ speed +=10 return speed; } function decelerate(){ speed -=10 return speed; } function getStatus(){ return console.log(speed===0?'stop':'running'); } return { setSpeed:setSpeed, getSpeed:getSpeed, accelerate:accelerate, decelerate:decelerate, getStatus:getStatus, } }()); Car.setSpeed(30); Car.getSpeed(); //30 Car.accelerate(); Car.getSpeed(); //40; Car.decelerate(); Car.decelerate(); Car.getSpeed(); //20 Car.getStatus(); // 'running'; Car.decelerate(); Car.decelerate(); Car.getStatus(); //'stop'; Car.speed(); //error
Schreiben Sie eine Funktion, um setTimeout zu verwenden, um die Funktion von setInterval zu simulieren
Code:
var i=0; function intv(){ setTimeout(function(){ console.log(i++); intv(); },1000); } intv();
Schreiben Sie eine Funktion, um die minimale Zeitgranularität von setTimeout zu berechnen
Code:
function getmin(){ var i = 0; var start = Date.now(); var clock = setTimeout(function(){ i++; if(i === 1000){ clearTimeout(clock); var end = Date.now(); console.log((end-start)/i) } clock = setTimeout(arguments.callee,0) },0) } getmin()
Was ist das Ausgabeergebnis des folgenden Codes?
var a = 1; setTimeout(function(){ a = 2; console.log(a); }, 0); var a ; console.log(a); a = 3; console.log(a);
Das Ausgabeergebnis dieses Codes ist 1;3;2, weil ein setTimeout ist im Code festgelegt, dann wird der Browser zum richtigen Zeitpunkt in die Aufgabenwarteschlange eingefügt. Wenn dieser Zeitpunkt auf 0 gesetzt ist, bedeutet dies, dass er sofort in die Warteschlange eingefügt, aber nicht sofort ausgeführt wird . Es muss noch auf die Ausführung des vorherigen Codes gewartet werden, daher muss setTimeout ausgeführt werden, nachdem der gesamte Code ausgeführt wurde (function(){a = 2;console.log(a);}, 0);.
Was ist das Ausgabeergebnis des folgenden Codes?
var flag = true; setTimeout(function(){ flag = false; },0) while(flag){} console.log(flag);
gibt das Ergebnis nicht aus, weil setTimeout(function(){flag = false;} ,0) wird ausgeführt, nachdem der gesamte Code ausgeführt wurde. Der Anfangswert von flag ist also true, sodass die Schleife fortgesetzt wird und auf console.log(flag) nicht zugegriffen werden kann. , daher ist es möglich, dass die Ausgabe wahr ist.
Was ist die Ausgabe des folgenden Codes? So geben Sie „Verzögerer: 0“, „Verzögerer: 1 ...“ aus (implementiert mit Schließungen)
for(var i=0;i<5;i++){ setTimeout(function(){ console.log('delayer:' + i ); }, 0); console.log(i); }
Code:
for(var i=0;i<5;i++){ (function(i){ setTimeout(function(){ console.log('delayer:' + i ); }, 0); })(i) console.log(i); }
Brain-burning-Frage
Was ist das Ergebnis des folgenden console.log? Warum?
function fn(a,b) { console.log(b); return { fn:function(c){ return fn(c,a); } }; } var a = fn(0); a.fn(1); a.fn(2); a.fn(3); var b = fn(0).fn(1).fn(2).fn(3); var c = fn(0).fn(1); c.fn(2); c.fn(3);
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Verwandte Lektüre:
Einfacher CSS3-Klick-Antwort-Animationsfall
So verwenden Sie Python, um die Bildähnlichkeit zu bestimmen
Das obige ist der detaillierte Inhalt vonJS-Verschlüsse und Timer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Der zentrale Zweck von HTML besteht darin, den Browser zu ermöglichen, Webinhalte zu verstehen und anzuzeigen. 1. HTML definiert die Webseitenstruktur und den Inhalt durch Tags, wie z. 3.HTML bietet Formularelemente zur Unterstützung der Benutzerinteraktion. 4. Optimierung des HTML -Codes kann die Leistung der Webseiten verbessern, z. B. die Reduzierung von HTTP -Anforderungen und das Komprimieren von HTML.

HtmltagsareessentialwebdevelopmentaTheStructureAndenhanceWebpages.1) Sie definelayout, semantics und interaktivität.2) SemantictagsimproveAccessibilityandseo.3) ordnungsgemäße Kennzeichnung.

Ein konsistenter HTML -Codierungsstil ist wichtig, da er die Lesbarkeit, Wartbarkeit und Effizienz des Codes verbessert. 1) Verwenden Sie Kleinbuchstaben und Attribute, 2) Behalten Sie die konsistente Einklebung, 3) Wählen und halten Sie sich an Einzel- oder Doppelzitate.

Lösung zur Implementierung von Multi-Project-Karussell in Bootstrap4, das Multi-Project-Karussell in Bootstrap4 implementiert, ist keine leichte Aufgabe. Obwohl Bootstrap ...

Wie kann man den Effekt der Penetration des Maus -Scroll -Ereignisses erreichen? Wenn wir im Internet stöbern, begegnen wir oft auf spezielle Interaktionsdesigns. Zum Beispiel auf der offiziellen Website von Deepseek � ...

Der Standard -Playback -Steuerungsstil von HTML -Video kann nicht direkt über CSS geändert werden. 1. Erstellen Sie benutzerdefinierte Steuerelemente mit JavaScript. 2. verschönern diese Kontrollen durch CSS. 3. Berücksichtigen Sie Kompatibilität, Benutzererfahrung und -leistung. Wenn Sie Bibliotheken wie Video.js oder PLYR verwenden, können Sie den Prozess vereinfachen.

Potenzielle Probleme bei der Verwendung natives Auswahl von Mobiltelefonen bei der Entwicklung mobiler Anwendungen haben wir häufig auf die Auswahl von Kästchen. Normalerweise Entwickler ...

Was sind die Nachteile der Verwendung von nativen Auswahl auf Ihrem Telefon? Bei der Entwicklung von Anwendungen auf mobilen Geräten ist es sehr wichtig, die richtigen UI -Komponenten auszuwählen. Viele Entwickler ...


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

Dreamweaver CS6
Visuelle Webentwicklungstools

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

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

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor
