Heim Web-Frontend js-Tutorial Ausführliche Diskussion zur Verwendung von JavaScript-Funktionsabschlüssen und detaillierte Codeerklärungen

Ausführliche Diskussion zur Verwendung von JavaScript-Funktionsabschlüssen und detaillierte Codeerklärungen

Jul 25, 2017 pm 03:04 PM
javascript js 注意事项

Das englische Wort für „Abschluss“ ist „Closure“, was ein sehr wichtiger Teil der Kenntnisse in JavaScript ist, da die Verwendung von Abschlüssen die Menge unseres Codes erheblich reduzieren, unseren Code klarer aussehen lassen usw. Kurz gesagt, das ist es sehr funktional leistungsstark.

Die Bedeutung des Abschlusses: Um es ganz klar auszudrücken: Der Abschluss ist die Verschachtelung von Funktionen. Die innere Funktion kann alle Variablen der äußeren Funktion verwenden, auch wenn die äußere Funktion ausgeführt wurde (dies beinhaltet). JavaScript wirkt sich auf die Domänenkette aus).

Beispiel 1

function checkClosure(){
    var str = 'rain-man';
    setTimeout(
        function(){ alert(str); } //这是一个匿名函数
    , 2000);
}
checkClosure();
Nach dem Login kopieren

Dieses Beispiel sieht sehr einfach aus. Wenn Sie den Ausführungsprozess sorgfältig analysieren, gibt es immer noch viele Wissenspunkte: Die Ausführung der Funktion checkClosure erfolgt augenblicklich (vielleicht auch nur). dauert 0,00001 Millisekunden), eine Variable str wird im Funktionskörper von checkClosure erstellt. Nach der Ausführung von checkClosure wird str nicht freigegeben. Dies liegt daran, dass die anonyme Funktion in setTimeout einen Verweis auf str hat. Nach 2 Sekunden wird die anonyme Funktion im Funktionskörper ausgeführt und str freigegeben.

Beispiel 2, Code optimieren

function forTimeout(x, y){
    alert(x + y);
}
function delay(x , y  , time){
    setTimeout('forTimeout(' +  x + ',' +  y + ')' , time);    
}
/**
 * 上面的delay函数十分难以阅读,也不容易编写,但如果使用闭包就可以让代码更加清晰
 * function delay(x , y , time){
 *     setTimeout(
 *         function(){
 *             forTimeout(x , y) 
 *         }          
 *     , time);   
 * }
 */
Nach dem Login kopieren

Die größte Verwendung anonymer Funktionen besteht darin, Abschlüsse zu erstellen (dies ist eine der Funktionen der JavaScript-Sprache), und Sie können auch Namespaces dafür erstellen Reduzieren Sie die globale Verwendung von Variablen.

Beispiel 3:

var oEvent = {};
(function(){ 
    var addEvent = function(){ /*代码的实现省略了*/ };
    function removeEvent(){}
    oEvent.addEvent = addEvent;
    oEvent.removeEvent = removeEvent;
})();
Nach dem Login kopieren

Beispiel 4:

var rainman = (function(x , y){
    return x + y;
})(2 , 3);
/**
 * 也可以写成下面的形式,因为第一个括号只是帮助我们阅读,但是不推荐使用下面这种书写格式。
 * var rainman = function(x , y){
 *    return x + y;
 * }(2 , 3);
 */
Nach dem Login kopieren

Hier erstellen wir eine Variable rainman und initialisieren sie auf 5, indem wir direkt die anonyme Funktion aufrufen, die This Ein kleiner Trick ist manchmal sehr nützlich.

Beispiel 5:

var outer = null;
(function(){
    var one = 1;
    function inner (){
        one += 1;
        alert(one);
    }
    outer = inner;
})();
outer();    //2
outer();    //3
outer();    //4
Nach dem Login kopieren

Die Variable eins in diesem Code ist eine lokale Variable (da sie innerhalb einer Funktion definiert ist) und daher von außen nicht zugänglich. Aber hier haben wir die innere Funktion erstellt, die auf die Variable eins zugreifen kann, und die globale Variable äußere bezieht sich auf inner, sodass ein dreimaliger Aufruf von äußere das inkrementelle Ergebnis anzeigt.

Hinweis: Mit der Schließung können innere Funktionen auf Variablen in der übergeordneten Funktion verweisen, aber die Variable ist der Endwert

Beispiel 6:

/**
 * <body>
 * <ul>
 *     <li>one</li>
 *     <li>two</li>
 *     <li>three</li>
 *     <li>one</li>
 * </ul>
 */
var lists = document.getElementsByTagName(&#39;li&#39;);
for(var i = 0 , len = lists.length ; i < len ; i++){
    lists[ i ].onmouseover = function(){
        alert(i);    
    };
}
Nach dem Login kopieren

Das finden Sie, wenn Wenn Sie mit der Maus über jedes

Lösung eins:

var lists = document.getElementsByTagName(&#39;li&#39;);
for(var i = 0 , len = lists.length ; i < len ; i++){
    (function(index){
        lists[ index ].onmouseover = function(){
            alert(index);    
        };                    
    })(i);
}
Nach dem Login kopieren

Lösung zwei:

var lists = document.getElementsByTagName(&#39;li&#39;);
for(var i = 0, len = lists.length; i < len; i++){
    lists[ i ].$$index = i;    //通过在Dom元素上绑定$$index属性记录下标
    lists[ i ].onmouseover = function(){
        alert(this.$$index);    
    };
}
Nach dem Login kopieren

Lösung drei:

function eventListener(list, index){
    list.onmouseover = function(){
        alert(index);
    };
}
var lists = document.getElementsByTagName(&#39;li&#39;);
for(var i = 0 , len = lists.length ; i < len ; i++){
    eventListener(lists[ i ] , i);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAusführliche Diskussion zur Verwendung von JavaScript-Funktionsabschlüssen und detaillierte Codeerklärungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Apr 03, 2024 am 11:55 AM

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

Wuthering WavesEinführung in Dinge, die während des Tests beachtet werden müssen Wuthering WavesEinführung in Dinge, die während des Tests beachtet werden müssen Mar 13, 2024 pm 08:13 PM

Bitte vermeiden Sie während des Mingchao-Tests Systemaktualisierungen, Werksresets und den Austausch von Teilen, um zu verhindern, dass Informationsverluste zu abnormalen Spielanmeldungen führen. Besondere Erinnerung: Während des Testzeitraums gibt es keinen Einspruchskanal. Gehen Sie daher bitte mit Vorsicht vor. Einführung in die Vorsichtsmaßnahmen während des Mingchao-Tests: Aktualisieren Sie das System nicht, stellen Sie die Werkseinstellungen nicht wieder her, ersetzen Sie keine Gerätekomponenten usw. Hinweise: 1. Bitte aktualisieren Sie das System während des Testzeitraums sorgfältig, um Informationsverluste zu vermeiden. 2. Wenn das System aktualisiert wird, kann es dazu kommen, dass die Anmeldung beim Spiel nicht möglich ist. 3. Zu diesem Zeitpunkt ist der Einspruchskanal noch nicht geöffnet. Den Spielern wird empfohlen, nach eigenem Ermessen zu entscheiden, ob sie ein Upgrade durchführen möchten. 4. Gleichzeitig kann ein Spielkonto nur mit einem Android-Gerät und einem PC verwendet werden. 5. Es wird empfohlen, zu warten, bis der Test abgeschlossen ist, bevor Sie das Mobiltelefonsystem aktualisieren, die Werkseinstellungen wiederherstellen oder das Gerät austauschen.

Wie starte ich zum ersten Mal eine Live-Übertragung auf Douyin? Was ist bei der ersten Live-Übertragung zu beachten? Wie starte ich zum ersten Mal eine Live-Übertragung auf Douyin? Was ist bei der ersten Live-Übertragung zu beachten? Mar 22, 2024 pm 04:10 PM

Mit dem Aufkommen von Kurzvideoplattformen ist Douyin zu einem festen Bestandteil des täglichen Lebens vieler Menschen geworden. Live-Übertragungen auf Douyin und die Interaktion mit Fans sind die Träume vieler Nutzer. Wie startet man also zum ersten Mal eine Live-Übertragung auf Douyin? 1. Wie starte ich zum ersten Mal eine Live-Übertragung auf Douyin? 1. Vorbereitung Um die Live-Übertragung zu starten, müssen Sie zunächst sicherstellen, dass Ihr Douyin-Konto die Authentifizierung mit echtem Namen abgeschlossen hat. Das Tutorial zur Echtnamen-Authentifizierung finden Sie unter „Ich“ -> „Einstellungen“ -> „Konto und Sicherheit“ in der Douyin-APP. Nach Abschluss der Authentifizierung mit echtem Namen können Sie die Live-Übertragungsbedingungen erfüllen und mit der Live-Übertragung auf der Douyin-Plattform beginnen. 2. Beantragen Sie eine Live-Übertragungserlaubnis. Nachdem Sie die Bedingungen für die Live-Übertragung erfüllt haben, müssen Sie eine Live-Übertragungserlaubnis beantragen. Öffnen Sie die Douyin-App und klicken Sie auf „Ich“ -> „Creator Center“ -> „Direkt“.

Schritte und Vorsichtsmaßnahmen für die Verwendung von localstorage zum Speichern von Daten Schritte und Vorsichtsmaßnahmen für die Verwendung von localstorage zum Speichern von Daten Jan 11, 2024 pm 04:51 PM

Schritte und Vorsichtsmaßnahmen für die Verwendung von localStorage zum Speichern von Daten In diesem Artikel wird hauptsächlich die Verwendung von localStorage zum Speichern von Daten vorgestellt und relevante Codebeispiele bereitgestellt. LocalStorage ist eine Methode zum Speichern von Daten im Browser, die die Daten lokal auf dem Computer des Benutzers speichert, ohne einen Server zu durchlaufen. Im Folgenden finden Sie die Schritte und Dinge, die Sie beachten sollten, wenn Sie localStorage zum Speichern von Daten verwenden. Schritt 1: Prüfen Sie, ob der Browser LocalStorage unterstützt

Schritte und Vorsichtsmaßnahmen für die Installation von Pip ohne Netzwerk Schritte und Vorsichtsmaßnahmen für die Installation von Pip ohne Netzwerk Jan 18, 2024 am 10:02 AM

Methoden und Vorsichtsmaßnahmen für die Installation von Pip in einer Offline-Umgebung. Die Installation von Pip wird in einer Offline-Umgebung, in der das Netzwerk nicht reibungslos funktioniert, zu einer Herausforderung. In diesem Artikel stellen wir verschiedene Methoden zur Installation von Pip in einer Offline-Umgebung vor und stellen spezifische Codebeispiele bereit. Methode 1: Verwenden Sie das Offline-Installationspaket, um in einer Umgebung, in der Sie eine Verbindung zum Internet herstellen können, das PIP-Installationspaket von der offiziellen Quelle herunterzuladen: pipdownloadpip. Dieser Befehl lädt PIP und seine abhängigen Pakete automatisch von der offiziellen Quelle herunter Quelle und speichern Sie sie im aktuellen Verzeichnis. Verschieben Sie das heruntergeladene komprimierte Paket an einen Remote-Speicherort

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Häufig gestellte Fragen und Hinweise: Verwendung von MyBatis für Batch-Abfragen Häufig gestellte Fragen und Hinweise: Verwendung von MyBatis für Batch-Abfragen Feb 19, 2024 pm 12:30 PM

Hinweise und FAQs zu MyBatis-Batch-Abfrageanweisungen Einführung MyBatis ist ein hervorragendes Persistenzschicht-Framework, das flexible und effiziente Datenbankoperationen unterstützt. Unter diesen ist die Stapelabfrage eine häufige Anforderung, indem mehrere Daten gleichzeitig abgefragt werden. Dadurch kann der Aufwand für die Datenbankverbindung und die SQL-Ausführung reduziert und die Leistung des Systems verbessert werden. In diesem Artikel werden einige Vorsichtsmaßnahmen und häufige Probleme mit MyBatis-Batch-Abfrageanweisungen vorgestellt und spezifische Codebeispiele bereitgestellt. Ich hoffe, dass dies den Entwicklern etwas helfen kann. Was Sie bei der Verwendung von M beachten sollten

Die Beziehung zwischen js und vue Die Beziehung zwischen js und vue Mar 11, 2024 pm 05:21 PM

Die Beziehung zwischen js und vue: 1. JS als Eckpfeiler der Webentwicklung; 2. Der Aufstieg von Vue.js als Front-End-Framework; 3. Die komplementäre Beziehung zwischen JS und Vue; Vue.

See all articles