Heim > Web-Frontend > js-Tutorial > In einem Satz: Was ist Schließung?

In einem Satz: Was ist Schließung?

零下一度
Freigeben: 2017-06-26 15:47:40
Original
2395 Leute haben es durchsucht

In einem Satz: Ein Abschluss ist eine Funktion, die externe Bindungen innerhalb des Gültigkeitsbereichs erfasst.

Offizielle Definition: Ein Ausdruck (normalerweise eine Funktion), der viele Variablen und eine an diese Variablen gebundene Umgebung hat, da diese Variablen auch als Teil des Ausdrucks bezeichnet werden.

Die Beziehung zwischen freien Variablen und Abschlüssen: Freie Variablen sind für die Erstellung von Abschlüssen geschlossen.

Die interne Logik ist

Freie Variablen: Wenn innerhalb einer Funktion andere Funktionen vorhanden sind, können diese internen Funktionen auf die in der externen Funktion deklarierten Variablen zugreifen (diese Variablen werden als freie Variablen bezeichnet).

Drei Merkmale von Verschlüssen:

1. In Funktionen verschachtelte Funktionen

2 Parameter und Variablen

3. Parameter und Variablen werden vom Garbage-Collection-Mechanismus nicht recycelt

Der Nachteil der Schließung besteht darin, dass sie resident ist im Speicher und im Willen Erhöhte Speichernutzung, unsachgemäße Verwendung kann leicht zu Speicherverlusten führen.

Vorteile von Schließungen:

1 Ich hoffe, eine Variable kann langfristig im Speicher verbleiben

2. Verschmutzung globaler Variablen vermeiden

3

Der Abschluss löst das Indexwertproblem:

 
 
 
  charset="UTF-8">
  <span class="html-tag">
 
 
 
 
  • 1
  •  
  • 2
  •  
  • 3
  •  
  • 4
  •  
     
     
     
     

    Speicherleckproblem:

    Die JS-Objekte und DOM-Objekte des IE verwenden unterschiedliche Garbage-Collection-Mechanismen, sodass Schließungen im IE zu Speicherlecks führen, d. h. im Speicher befindliche Elemente können nicht zerstört werden.

    Funktionsabschluss(){
    var oDiv = document.getElementById("div1");//oDiv Es bleibt nach der Verwendung im Speicher
    oDiv.onclic = function(){
    alert("oDiv.innerHTML");//Die Verwendung von oDiv hier führt zu Speicherverlusten
    };
    function closure(){
      var oDiv = document.getElementById("div1");//oDiv用完之后一直驻留在内存
       
      oDiv.onclic = function(){
      alert("oDiv.innerHTML");//这里用oDiv会导致内存泄露
      };
       
     

    closure();

     

    //将oDiv解除引用来避免内存泄露 function closure(){ var oDiv = document.getElementById("div1");//oDiv用完之后一直驻留在内存 var test = oDiv.innerHTM oDiv.onclic = function(){ alert(test);//这里用oDiv会导致内存泄露 }; oDiv = null; } 
    } closure(); Speicher nach Abschluss var test = oDiv.innerHTM oDiv.onclic = function(){ alarm(test);//Die Verwendung von oDiv führt hier zu Speicherlecks };

    Das obige ist der detaillierte Inhalt vonIn einem Satz: Was ist Schließung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:php.cn
    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
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage