


JavaScript-Voranalyse und verwandte Fähigkeiten. Analyse_Javascript-Kenntnisse
Dieser Artikel beschreibt das Vorparsen von JavaScript und verwandte Techniken anhand von Beispielen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Variable
Beginnen Sie ebenfalls mit den Fehlervergleichstipps dieser beiden kleinen Beispiele.
alert(y1); //代码段1 var y1 = 'dddd'; alert(y2); //代码段2 // alert(typeof y2); y2 = 'xxxxx';
Denken Sie zuerst darüber nach, warum einer undefiniert auffordert und der andere einen Fehler einer undefinierten Variablen auslöst. . Schauen wir uns zunächst den JavaScript-Parsing-Prozess an.
Javascript führt vor der Ausführung des Prozesses eine „Vorabanalyse“ des Ereignisses durch. Die Parsing-Engine führt die Erstellung aller var-Variablen auf Blockebene durch und gibt ihnen einen Anfangswert: undefiniert. Auf diese Weise ist klar, warum im ersten Beispiel undefiniert auftaucht.
Der erste Codeabschnitt entspricht also tatsächlich
var y1; alert(typeof y1); //很自然,它此时值为undefined y1 = 'dddd';
Warum gibt der zweite Code dann erneut einen Fehler aus? Er befindet sich nicht mehr in der Phase „Voranalyse“ (hier gehe ich davon aus, dass der Browser nur zwei Dinge ausführt, wenn er auf ein Skript-Tag stößt). und Ausführung (tatsächlich sind es nicht nur diese beiden Dinge), aber in der Ausführungsphase wird der Fehler ausgelöst, weil js den Status von y2 im Ausführungsabschnittsstatus (der Voranalysephase) nicht kennt erfasst keine Informationen über y2), natürlich wird ein undefinierter Fehler ausgegeben. Dies bringt ein weiteres Problem mit sich: js ist eine schwach typisierte Sprache und Variablen können ohne Definition verwendet werden. Warum wird hier also ein Definitionsfehler ausgegeben?
Alles geschieht aus einem bestimmten Grund. JavaScript hat immer viele eigene seltsame Eigenschaften, wie zum Beispiel das ungleichmäßige Lesen und Schreiben von Variablen. Undefinierte Variablen sind nur beschreibbar, nicht lesbar. Was ist beschreibbar? Jeder kennt diese Schreibweise:
y2 = 'exam'; //在没出现它的定义操作之前(即在它还没有自己的scope之前)该操作会将这段代码认为是定义一个全局变量,在window上注册一个属性y2,并赋值为exam
Aber beim Lesen kann die js-Engine keine relevanten Informationen darüber finden, daher handelt sie nach eigenem Ermessen und wirft einen undefinierten Fehler ohne Gnade aus. Dies ist die Spielregel von js. Und warum können wir seinen Typ ermitteln? Denken Sie daran, wie js mit Objekten arbeitet. Wenn Sie auf eine nicht vorhandene Eigenschaft und einen nicht vorhandenen Typ des Objekts zugreifen, werden Sie mit „undefiniert“ aufgefordert (da es sich derzeit um eine Eigenschaft des Fensterobjekts handelt).
Noch ein Hinweis: Das Lesen und Schreiben von Variablen ist nicht gleichwertig. Es werden nur die Eigenschaften aller Objekte gelesen , es wird undefiniert angezeigt.
Fazit
Hier das Ergebnis meiner Überlegungen: Es gibt gewisse Ähnlichkeiten zwischen den Schreiboperationen von Variablen und Objekten. Allerdings hat jede ihre eigenen Regeln für Leseoperationen. Aus diesem Grund entsteht das oben genannte Problem.
Auf diese Weise sollte die Antwort auf die folgende Frage einfach sein.
if (!('a' in window)) { var a = 1; } alert(a);
Funktion
Erinnern Sie sich an die oben erwähnte Voranalyse von Javascript. Zusätzlich zur Vordefinition der Variablen var wird auch die Definition der Funktion extrahiert Die Funktion kann überall im Skript definiert und aufgerufen werden. Nicht auf das beschränkt, was es vorher war.
Aber die Methode zum Definieren von Funktionen umfasst eine Methode namens Literaldefinition, die die var-Methode zum Deklarieren von Funktionen verwendet. Siehe unten
alert(typeof y3); //结果? var y3 = function (){ console.log('1'); }
Denken Sie an diese Konvention: Der Aufruf muss nach der Aussage „Warum“ stehen. Wenn Sie das oben Gesagte verstehen, ist die Antwort hier bereits klar. Die Javascript-Engine gibt ihnen beim Vorparsen von var den Anfangswert undefiniert. Wenn wir sie also vor ihrer Deklaration aufrufen, hat die Javascript-Engine ihren wahren Wert noch nicht erhalten und meldet natürlich „xxx ist keine Funktion“. " Falsch. Dies verdeutlicht auch, warum es sich bei beiden um Funktionsdeklarationen handelt, aber eine davon mit der Reihenfolge der Deklaration und des Aufrufs zusammenhängt, während die andere keine solchen Einschränkungen hat.
Fazit
Es ist eine Funktion, das Ergebnis der Ausführung von js und der dynamischen Änderung, und folgt weiterhin den Voranalyseregeln für Variablen (bei der oben genannten Warnung wurden die Informationen der Literalfunktion nicht abgerufen).
Was ist, wenn beides vermischt ist? Siehe unten, es gibt sowohl Variablen als auch Funktionen für y4.
alert(typeof y4); //结果? function y4(){ console.log('y4') } var y4;
Da die Deklarationspriorität der Funktion bei der JavaScript-Voranalyse hoch ist, ist y4 natürlich vom Funktionstyp, aber nachdem y4 ein Wert zugewiesen wurde (die JS-Engine befindet sich zu diesem Zeitpunkt im Ausführungsprozess), erfolgt die Zuweisungsoperation an JS wird die Deklaration der Funktion überschreiben. Also:
alert(typeof y5); var y5 = 'angle'; function y5(){ console.log('ghost'); } alert(y5);
Das erste Alarmergebnis ist eine Funktion, da es sich am Anfang des js-Ausführungsprozesses befindet. Bei der zweiten Warnung wurde der Wert auf 5 umgeschrieben (lassen Sie sich nicht von der Definitionsposition der Funktion unten täuschen.)
Als ich über das Parsen und Ausführen von js getrennt nachdachte, stellte ich fest, dass meine Augen plötzlich erleuchtet wurden und die Antworten auf viele Fragen ganz natürlich auftauchten, wie der Autor dieses Artikels sagte: „Sobald Sie die Ausführungsumgebung verstanden haben, rufen Sie das Objekt auf.“ Abschlusskonzepte wie Pakete, lexikalischer Bereich und Bereichsketten können viele Phänomene in der JS-Sprache leicht lösen
Selbst in dieser Sprache, in der es viele unglaubliche Dinge gibt, gibt es viele Gründe, die darauf zurückgeführt werden können.Wie Sie Parameter besser beurteilen können
Wie können wir, nachdem wir oben so viel besprochen haben, es näher an die tatsächliche Entwicklung bringen, da JavaScript ungleichmäßiges Lesen und Schreiben aufweist? Wie können wir vermeiden, Parameterbeurteilungen vorzunehmen, ohne Fehler zu melden?
zB:
if(cusVar){ //这里的判断,是不是存在隐含的问题呢。 }
如何严谨一些呢。
if(window['cusVar']) { //保证它不报错。 //或者这样的判断也是可行的 window.cusVar | typeof cusVar !== 'undefined' //干活咯 }
最后补充又一个小quiz, (理解 预解析与执行的分离)
var y7 = 'test'; function fun1(){ alert(y7); var y7 = 'sex'; } fun1();
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。

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



So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

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

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

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

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

JavaScript ist eine in der Webentwicklung weit verbreitete Programmiersprache, während WebSocket ein Netzwerkprotokoll für die Echtzeitkommunikation ist. Durch die Kombination der leistungsstarken Funktionen beider können wir ein effizientes Echtzeit-Bildverarbeitungssystem erstellen. In diesem Artikel wird erläutert, wie dieses System mithilfe von JavaScript und WebSocket implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. Zunächst müssen wir die Anforderungen und Ziele des Echtzeit-Bildverarbeitungssystems klären. Angenommen, wir haben ein Kameragerät, das Bilddaten in Echtzeit sammeln kann
