Heim  >  Artikel  >  Web-Frontend  >  Hat es6 Verschlüsse?

Hat es6 Verschlüsse?

青灯夜游
青灯夜游Original
2022-11-21 18:57:171385Durchsuche

es6 hat Verschlüsse. Wenn Sie in es6 eine andere Funktion innerhalb einer Funktion erstellen, wird die eingebettete Funktion als Abschluss bezeichnet, der auf die lokalen Variablen der externen Funktion zugreifen kann. Einfach ausgedrückt bezieht sich ein Abschluss auf eine Funktion, die das Recht hat, auf Variablen im Bereich zuzugreifen einer anderen Funktion. Die Hauptfunktion von Abschlüssen besteht darin, den Umfang von Variablen zu erweitern. Da Schließungen dazu führen, dass die Variablen in der Funktion im Speicher gespeichert werden, was viel Speicher verbraucht, können Schließungen nicht missbraucht werden, da es sonst zu Leistungsproblemen auf der Webseite und möglicherweise zu Speicherverlusten im IE kommt.

Hat es6 Verschlüsse?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.

1. Variablenbereich

Variablen werden entsprechend ihrem Gültigkeitsbereich in zwei Typen unterteilt: globale Variablen und lokale Variablen.

  • Globale Variablen können innerhalb von Funktionen verwendet werden.

  • Lokale Variablen können nicht außerhalb der Funktion verwendet werden.

  • Wenn die Funktion die Ausführung abschließt, werden die lokalen Variablen in diesem Bereich zerstört.

2. Was ist Schließung?

In es6 bezieht sich „Abschluss“ auf eine Funktion, die Zugriff auf Variablen im Gültigkeitsbereich einer anderen Funktion hat. Einfaches Verständnis: Ein Bereich kann auf lokale Variablen innerhalb einer anderen Funktion zugreifen.

Abschluss: Erstellen Sie eine weitere Funktion innerhalb einer Funktion. Die eingebettete Funktion wird als Abschluss bezeichnet. Sie kann auf die lokalen Variablen der externen Funktion zugreifen.

	// fun 这个函数作用域 访问了另外一个函数 fn 里面的局部变量 num
    function fn(){
        let num = 10
        function fun(){
            console.log(num)
        }
        fun()
    }
    fn() //10

Die Hauptfunktion des Abschlusses: Erweitern Sie den Gültigkeitsbereich der Variablen.

	// fn 外面的作用域可以访问fn 内部的局部变量
    function fn(){
        let num = 10
        // 方法一: 先定义再返回函数
        function fun(){
            console.log(num)
        }
        return fun //返回 fun函数
    }
    let f = fn()
    f() //10
	// fn 外面的作用域可以访问fn 内部的局部变量
    function fn(){
        let num = 10
        // 方法二: 直接返回函数
        return function(){
            console.log(num)
        }
    }
    let f = fn()
    f() //10

3. Verwendungsszenarien von Verschluss

(1) verwendet, um die Werte zurückzugeben. als Parameter von Funktionen durch Schließung

//以闭包的形式将 name 返回
function fun(){
    let name = 'woniu'

    //定义闭包
    return function f1(){
        return name
    }
}

let ft = fun() //因为fun函数的返回值是f1函数,ft实质是一个函数

let na = ft()  //调用ft函数,实际调用的就是f1函数
console.log(na); //woniu

(8), erste Unterscheidung (die gleichen Parameter, die Funktion wird nicht wiederholt ausgeführt)

var f2
function fn(){
    let name = '曹操'
    f2 = function(){ //闭包,将外部函数的name变量作为闭包的返回值
        return name
    }
}
fn() //必须先调用fn函数,否则f2不是一个函数
console.log(f2());  //曹操

Achtung

(1) Finden Sie heraus, wer die Schließungsfunktion ist (2) Unterscheiden Sie klar zwischen dem Rückgabewert des Abschlusses und dem Rückgabewert der externen Funktion. .

Was ist die Funktion des Abschlusses: Erweitern Sie den Umfang der Variablen.

Es wird kein Abschluss generiert, da keine lokalen Variablen vorhanden sind, sodass auf die globalen Variablen zugegriffen wird.

function fn(){
    let name = '蜗牛学苑'

    //定义闭包
    return function callback(){
        return name
    }
}

let f1 = fn() //将fn函数的返回值callback赋给f1
function f2(temp){
    console.log(temp()) //输出temp函数的返回值,实际调用了闭包callback
}
//调用f2函数:将f1作为实参传递给temp
f2(f1)

Hinweise zur Verwendung von Abschlüssen

1) Da Abschlüsse dazu führen, dass die Variablen in der Funktion im Speicher gespeichert werden, was viel Speicher verbraucht, können Abschlüsse nicht missbraucht werden, da es sonst zu Leistungsproblemen im Web kommt Seite, was zu Speicherverlusten im IE führen kann. Die Lösung besteht darin, alle nicht verwendeten lokalen Variablen zu löschen, bevor die Funktion beendet wird.

2) Der Abschluss ändert den Wert der Variablen innerhalb der übergeordneten Funktion außerhalb der übergeordneten Funktion. Wenn Sie daher die übergeordnete Funktion als Objekt, den Abschluss als öffentliche Methode und die internen Variablen als privaten Wert verwenden, müssen Sie darauf achten, den Wert der Variablen innerhalb der übergeordneten Funktion nicht zu ändern. 【Empfohlenes Lernen:

Javascript-Video-Tutorial

Das obige ist der detaillierte Inhalt vonHat es6 Verschlüsse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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