Heim Web-Frontend js-Tutorial Zusammenfassung der grundlegenden JavaScript-Kenntnisse (8) Ausführungsprozess vor der Kompilierung

Zusammenfassung der grundlegenden JavaScript-Kenntnisse (8) Ausführungsprozess vor der Kompilierung

Mar 10, 2018 pm 01:31 PM
javascript js 编译

Dieses Mal bringe ich Ihnen eine Zusammenfassung der grundlegenden JavaScript-Kenntnisse. (8) Hier ist ein praktischer Fall Schauen Sie mal rein.

JS Running Trilogy

Schritt Eins: Syntaxanalyse

Teil Zwei: Vorkompilierung

Teil Drei: Interpretation und Ausführung

Vor- Kompilierung

Syntaxanalyse wird auch als semantische Analyse bezeichnet. Der Prozess wird im gesamten Artikel ausgeführt. Wenn diese Codes beispielsweise ausgeführt werden, werden sie zeilenweise interpretiert und ausgeführt Aber vor der Ausführung besteht der erste Schritt der Systemausführung darin, sie zu scannen, um zu sehen, ob es irgendwelche Grammatikfehler auf niedriger Ebene gibt, wie z. B. fehlende Klammern, das Hinzufügen chinesischer Zeichen usw. Es wird gescannt Der gesamte Text wird jedoch nicht ausgeführt. Nach dem Scannen des gesamten Textes wird er vorkompiliert und dann zeilenweise interpretiert

Auftakt zur Vorkompilierung

imply global 暗示全局变量: 即任何变量,如果变量未经声明就赋值,自变量就位全局对象所有
eg : a = 123;
eg : var a = b = 123;
Nach dem Login kopieren

Alle deklarierten globalen Variablen sind die Attribute des Fensters

  eg:var a = 123;===> window.a = 123;
//例子:
   function test (){        console.log("a");
   }  
   test();//成功打印出a,
   box();//写在方法之前也成功打印出a,为什么能执行就是有预编译的过程
   function box (){        console.log("a");
   }    
   var a =123;    console.log(a);//输出123
   console.log(a);//输出undefined,不报错;
    var a = 123;    
    //但是如果直接打印会报错;
    console.log(b)//报错
    //也是预编译的效果
    
    //如果想偷懒记住两句话
    //函数声明整体提升
    //变量 声明提升
Nach dem Login kopieren

Erläutern Sie das Thema Verbesserung der Funktionsdeklaration : Wenn Sie eine Funktionsdeklaration schreiben, unabhängig davon, wo Sie sie schreiben, wird das System dies immer tun Es bringt diese Funktion an den Anfang der Logik, sodass sie im Wesentlichen unabhängig davon ist, wo Sie sie aufrufen, ob sie oben oder unten aufgerufen wird Wird unterhalb der Funktion aufgerufen und die Funktionsdeklaration wird für Sie immer auf die Logikebene heraufgestuft. Die vordere

-Variablendeklaration wird beispielsweise heraufgestuft:

var a = 123;//In Tatsächlich besteht es aus zwei Teilen von var a;//Deklarieren Sie zuerst die Variable
a = 123;//In Variablenzuweisung

Die vom System geförderte Variable wird also nicht zusammen mit der gefördert Wert, also gibt a im Beispiel undefiniert aus;

Beachten Sie, dass diese beiden Sätze nicht allmächtig sind

Zum Beispiel

function a(a){    var a = 123;    var a = function(){        
    }
    a();
}var a = 123;
Nach dem Login kopieren

Dies kann durch diese beiden nicht gelöst werden Sätze

Bevor wir das Obige erklären, müssen wir zunächst verstehen, was impiy global ist

globa implizieren: impliziert globale Variablen: Das heißt, jede Variable, der ein Wert zugewiesen wird, ohne deklariert zu werden, Die unabhängige Variable befindet sich im globalen Objekt.

z. B. a = 123;

z. B.: var a = b = 123;

a = 10;console.log (a);//Drucken Sie 10 und haben Sie dann awindow.a//10var b = 20;//Sie haben window deklariert und auch bwindow ist die globale Domäne

Vorkompiliert und formalisiert

AO-Objekt erstellen

Suchen Sie nach formalen Parametern und Variablendeklarationen und verwenden Sie die Variablen- und formalen Parameternamen als AO-Attributnamen. Der Wert ist undefiniert.

Vereinheitlichen Sie den tatsächlichen Parameterwert und der formale Parameter

Suchen Sie nach der Funktionsdeklaration im Funktionskörper und weisen Sie den Wert dem Funktionskörper zu

function fn (a){    console.log(a);    
    var a = 123;    console.log(a);    
    function a (){};    console.log(a);    
    var b = function (){        
    }    console.log(b);        
}
fn(1);
Nach dem Login kopieren

In diesem Beispiel werden alle Parameter, Variablen und Funktionsnamen aufgerufen a. Erstens ist es sicher, dass ein Überschreibphänomen auftritt. Wie bereits erwähnt, wird die Vorkompilierung ausgeführt Nimmt diese Der Widerspruch wurde ausgeglichen.

Erste Vorkompilierung

Der erste Schritt: Erstellen Sie ein AO-Objekt. Der vollständige Name lautet Aktivierungsobjekt. Dies ist der Bereich, der auch als Ausführungskontext bezeichnet wird

AO{    
}
Nach dem Login kopieren

Schritt 2: Formale Parameter und Variablendeklarationen finden, Variablen- und formale Parameternamen als AO-Attributnamen verwenden, und der Wert ist undefiniert

AO{    a : undefined
    b : undefined
}
Nach dem Login kopieren

Schritt 3: Tatsächliche Parameter vereinheitlichen Werte und formale Parameter

AO{    a : 1;    b : undefined
}
Nach dem Login kopieren

Schritt 4: Suchen Sie die Funktionsdeklaration im Funktionskörper und weisen Sie den Wert dem Funktionskörper zu

AO{    a : 1,    b : undefined,    //b是是函数表达式,不是函数声明,所以不变
    //然后有a了 有b了,然后将这个函数声明的名作为AO对象挂起来
    d : 
}//然后值赋予函数体,也就是把a和b的属性值,变成函数体//覆盖掉a 和b的的属性值//也就变成下面的//因为第四步的优先级最高AO{    a : function a () {}
    b : undefined,    //b是是函数表达式,不是函数声明,所以不变
    d : function d () {}
}
Nach dem Login kopieren

An diesem Punkt wird der Vor - Der Kompilierungsprozess endet, die Codeausführung beginnt und die Funktion

Dann schauen wir uns das obige Beispiel an

//预编译结果AO{    a : function a () {}
    b : undefined,    d : function d () {}
}//开始执行代码function fn (a){    //第一步开始打印a
    //根据上面预编译的结果,
    //所以打印结果是function a () {}
    console.log(a);    
    //第二步执行 var a = 123;
    //因为在预编译的第二步里面,变量已经提升了
    //所以第二步只执行的赋值
    //a = 123;去AO对象里面去找a
    //也就变成
    //AO{
        //a : 123   这个才是a的存储值
        //b : undefined,
        //d : function d () {}
    //}
    var a = 123;    //所以打印出123
    console.log(a);    //因为这句在话在预编译的时候系统已经看了
    //所以不在看这句话
    function a (){};    //所以下面的console.log(a)
    //还是打印123;
    console.log(a);    //一样下面的var b这句话在预编译的时候已经看了,所以不在看
    //AO{
        //a : 123   
        //所以b的值变成function(){}
        //b : function(){}
        //d : function d () {}
    //}
    var b = function (){
        
    }    //所以打印出function(){}
    console.log(b);
        
}
Nach dem Login kopieren

fn(1);

Wir Ich schaue mir ein Beispiel an

function test(a , b){    console.log(a);
    c = 0;    var c;
    a = 3;
    b = 2;    console.log(b);    function b () {}    console.log(b);
}//这下我们就很快的得出打印的东西//a-->1//b-->2//b-->2
Nach dem Login kopieren

Vorkompilierung findet nicht nur im Funktionskörper statt, sondern auch im globalen

Der erste Schritt im globalen Bereich besteht darin, zuerst das GO Global Object zu generieren , die anderen sind gleich

GO === Fenster

dann Die Frage ist, ob zuerst GO oder zuerst AO ausgeführt werden soll

Die Antwort ist, zuerst GO auszuführen

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:

Zusammenfassung der grundlegenden JavaScript-Kenntnisse (6) Funktionen, anfänglicher Umfang (Teil 1)

Zusammenfassung der Grundlagen der JavaScript-Kenntnisse (6) Funktionen, anfänglicher Umfang (Teil 2)

Zusammenfassung der grundlegenden JavaScript-Kenntnisse (7) Rekursion

Das obige ist der detaillierte Inhalt vonZusammenfassung der grundlegenden JavaScript-Kenntnisse (8) Ausführungsprozess vor der Kompilierung. 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)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
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)

Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen mit PHP und JS Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen mit PHP und JS Dec 17, 2023 pm 06:55 PM

Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen in PHP und JS. Mit der rasanten Entwicklung des Internets und der Technologie ist der Aktienhandel für viele Anleger zu einer wichtigen Möglichkeit geworden. Die Aktienanalyse ist ein wichtiger Teil der Anlegerentscheidung, und Kerzendiagramme werden häufig in der technischen Analyse verwendet. Wenn Sie lernen, wie man Kerzendiagramme mit PHP und JS zeichnet, erhalten Anleger intuitivere Informationen, die ihnen helfen, bessere Entscheidungen zu treffen. Ein Candlestick-Chart ist ein technischer Chart, der Aktienkurse in Form von Candlesticks anzeigt. Es zeigt den Aktienkurs

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

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen Dec 18, 2023 pm 03:39 PM

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

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

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.

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

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

Die KI-Ära von JS ist da! Die KI-Ära von JS ist da! Apr 08, 2024 am 09:10 AM

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

See all articles