Verständnis für JavaScript-Variablenförderung und -schließung
Dieser Artikel bietet Ihnen eine detaillierte Analyse der relevanten Wissenspunkte zur Förderung und Schließung von JavaScript-Variablen. Freunde, die sich dafür interessieren, können darauf verweisen.
Sehen wir uns zunächst eine Frage an:
<script> console.log(typeof a)//undefined var a='littlebear'; console.log(a)//littlebear </script> <script> console.log(typeof a)//string var a=1; console.log(a)//1 </script>
Im ersten Skript können Sie sehen, dass var a nach oben befördert wird und a = 'littlebear' an Ort und Stelle bleibt.
Der Grund, warum das zweite Skript nicht zuerst undefiniert ausgibt, liegt darin, dass a von var oben deklariert wurde, sodass var a nicht erneut heraufgestuft wird.
Sehen Sie sich eine andere Frage an:
<script> console.log(a)//function a(){} var a=1; console.log(a)//1 function a(){} console.log(a)//1 </script>
Sie können sehen, dass die Funktion a(){} nach oben befördert wird. Beschreibung der Funktion Heben von Variablen
1. Heben von Variablen
Vor ES6 hatte JavaScript keinen Gültigkeitsbereich auf Blockebene (ein Paar geschweifte Klammern {} , also ein Bereich auf Blockebene), mit nur globalem
Bereich und Funktionsbereich. Durch das Hochziehen von Variablen wird eine Variablendeklaration an den Anfang ihres Gültigkeitsbereichs verschoben.
Das Beispiel des vorherigen Lebenslaufs lautet:
console.log(global); // undefined var global = 'global'; console.log(global); // global function fn () { console.log(a); // undefined var a = 'aaa'; console.log(a); // aaa } fn();
Der Grund für das obige Druckergebnis liegt in der variablen Förderung von js. Tatsächlich wird der obige Code wie folgt ausgeführt:
var global; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值 console.log(global); // undefined global = 'global'; // 此时才赋值 console.log(global); // 打印出global function fn () { var a; // 变量提升,函数作用域范围内 console.log(a); a = 'aaa'; console.log(a); } fn();
2. Funktionsförderung
Es gibt zwei Möglichkeiten, Funktionen in js zu erstellen: Funktionsdeklaration und Funktionsliteral. Das Hochziehen von Funktionen gibt es nur für Funktionsdeklarationen! Zum Beispiel:
console.log(f1); // function f1() {} console.log(f2); // undefined function f1() {} var f2 = function() {}
Der Grund, warum es die oben gedruckten Ergebnisse gibt, liegt darin, dass die Funktionsförderung in js dazu führt, dass der Code tatsächlich wie folgt ausgeführt wird:
function f1() {} // 函数提升,整个代码块提升到文件的最开始 console.log(f1); console.log(f2); var f2 = function() {}
3. Was ist Abschlüsse
Ein Abschluss ist eine Funktion, die Zugriff auf eine Variable im Gültigkeitsbereich einer anderen Funktion hat.
Einfach ausgedrückt ermöglicht Javascript die Verwendung interner Funktionen – das heißt, Funktionsdefinitionen und Funktionsausdrücke befinden sich im Funktionskörper einer anderen Funktion. Darüber hinaus haben diese inneren Funktionen Zugriff auf alle lokalen Variablen, Parameter und anderen inneren Funktionen, die in der äußeren Funktion deklariert sind, in der sie existieren. Ein Abschluss wird gebildet, wenn eine dieser inneren Funktionen außerhalb der äußeren Funktion aufgerufen wird, die sie enthält.
4. Umfang der Variablen
Um Abschlüsse zu verstehen, müssen Sie zunächst den Umfang der Variablen verstehen.
Der Umfang von Variablen besteht lediglich aus zwei Typen: globale Variablen und lokale Variablen.
Das Besondere an der Javascript-Sprache ist, dass globale Variablen direkt innerhalb der Funktion gelesen werden können.
Die interne Funktion kann auf die Variablen der externen Funktion zugreifen, da die Bereichskette der internen Funktion den Bereich der externen Funktion umfasst.
kann auch verstanden werden als: der Bereich der internen Funktion Funktion Es strahlt auf den Umfang der externen Funktion aus;
var n=999; function f1(){ alert(n); } f1(); // 999
Andererseits können die lokalen Variablen innerhalb der Funktion nicht außerhalb der Funktion gelesen werden.
function f1(){ var n=999; } alert(n); // error
Hier gibt es etwas zu beachten: Wenn Sie Variablen innerhalb einer Funktion deklarieren, müssen Sie den Befehl var verwenden. Wenn Sie es nicht verwenden, deklarieren Sie tatsächlich eine globale Variable!
function f1(){ n=999; } f1(); alert(n); // 999
5. Wie man Abschlüsse schreibt und verwendet
var Circle={ "PI":3.14159, "area":function(r){ return this.PI * r * r; } }; alert( Circle.area(1.0) );//3.14159
Dass das Schreiben solcher Objekte auch eine Art Abschluss ist, war mir heute nicht klar , das ist die klassische Verwendung von Schließungen!
6. Zu beachtende Punkte bei der Verwendung von Abschlüssen
1) Da der Abschluss dazu führt, dass die Variablen in der Funktion im Speicher gespeichert werden, ist der Speicherverbrauch sehr groß. Daher können Schließungen nicht missbraucht werden, da dies sonst zu Leistungsproblemen auf der Webseite und möglicherweise zu Speicherverlusten im IE führt. 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.
Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.
Verwandte Artikel:
vue lädt benutzerdefinierte JS-Dateimethode
Instanz der Funktionsausführung nach Verlassen der Vue-Seite
Verwendung des Vue-Karussell-Plug-ins vue-concise-slider
Das obige ist der detaillierte Inhalt vonVerständnis für JavaScript-Variablenförderung und -schließung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

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

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

Mit der rasanten Entwicklung der Internetfinanzierung sind Aktieninvestitionen für immer mehr Menschen zur Wahl geworden. Im Aktienhandel sind Kerzendiagramme eine häufig verwendete Methode der technischen Analyse. Sie können den sich ändernden Trend der Aktienkurse anzeigen und Anlegern helfen, genauere Entscheidungen zu treffen. In diesem Artikel werden die Entwicklungskompetenzen von PHP und JS vorgestellt, der Leser wird zum Verständnis des Zeichnens von Aktienkerzendiagrammen geführt und es werden spezifische Codebeispiele bereitgestellt. 1. Aktien-Kerzendiagramme verstehen Bevor wir uns mit dem Zeichnen von Aktien-Kerzendiagrammen befassen, müssen wir zunächst verstehen, was ein Kerzendiagramm ist. Candlestick-Charts wurden von den Japanern entwickelt

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

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.

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

js-Methoden zum Aktualisieren der aktuellen Seite: 1. location.reload(); 2. location.href(); 4. window.location. Detaillierte Einführung: 1. location.reload(), verwenden Sie die Methode location.reload(), um die aktuelle Seite neu zu laden. 2. location.href, Sie können die aktuelle Seite aktualisieren, indem Sie das Attribut location.href usw. festlegen.

Einführung in JS-Torch JS-Torch ist eine Deep-Learning-JavaScript-Bibliothek, deren Syntax PyTorch sehr ähnlich ist. Es enthält ein voll funktionsfähiges Tensorobjekt (kann mit verfolgten Farbverläufen verwendet werden), Deep-Learning-Ebenen und -Funktionen sowie eine automatische Differenzierungs-Engine. JS-Torch eignet sich für die Deep-Learning-Forschung in JavaScript und bietet viele praktische Tools und Funktionen zur Beschleunigung der Deep-Learning-Entwicklung. Image PyTorch ist ein Open-Source-Deep-Learning-Framework, das vom Meta-Forschungsteam entwickelt und gepflegt wird. Es bietet einen umfangreichen Satz an Tools und Bibliotheken zum Erstellen und Trainieren neuronaler Netzwerkmodelle. PyTorch ist einfach, flexibel und benutzerfreundlich konzipiert und verfügt über dynamische Berechnungsdiagrammfunktionen

__proto__ und Prototyp sind zwei Attribute, die sich auf Prototypen in JS beziehen und leicht unterschiedliche Funktionen haben. In diesem Artikel werden die Unterschiede zwischen den beiden im Detail vorgestellt und verglichen sowie entsprechende Codebeispiele bereitgestellt. Lassen Sie uns zunächst verstehen, was sie bedeuten und wofür sie verwendet werden. proto__proto__ ist eine integrierte Eigenschaft eines Objekts, die auf den Prototyp des Objekts verweist. Jedes Objekt verfügt über ein __proto__-Attribut, einschließlich benutzerdefinierter Objekte, integrierter Objekte und Funktionsobjekte. Nach der Gattung __proto__
