Verwendung mit in JavaScript
Apropos with-Schlüsselwort in js: Der erste Eindruck vieler Freunde könnte sein, dass die Funktion des with-Schlüsselworts darin besteht, den Umfang zu ändern, und der wichtigste Punkt ist, dass die Verwendung des with-Schlüsselworts nicht empfohlen wird. Nachdem wir gehört haben, dass das Schlüsselwort „with“ nicht empfohlen wird, ignorieren viele von uns das Schlüsselwort „with“ und denken, wir könnten es einfach ignorieren und einfach verwenden. Aber manchmal, wenn wir uns einige Code- oder Interviewfragen ansehen, gibt es Fragen im Zusammenhang mit dem Schlüsselwort „with“. Es gibt viele Fallstricke, denen Sie noch nie ausgesetzt waren, daher ist es immer noch notwendig, über das Schlüsselwort „with“ zu sprechen.
Grundlegende Verwendung von with
Die ursprüngliche Absicht der with-Anweisung besteht darin, eine Verknüpfung im Namespace-Stil für den ebeneweisen Objektzugriff bereitzustellen Bereich, direkt über den Knoten Der Name des aufrufenden Objekts.
with wird normalerweise als Abkürzung verwendet, um wiederholt auf mehrere Eigenschaften im selben Objekt zu verweisen, ohne wiederholt auf das Objekt selbst zu verweisen.
Zum Beispiel gibt es derzeit ein Objekt wie dieses:
var obj = { a: 1, b: 2, c: 3};
Wenn Sie den Wert jedes Elements in obj ändern möchten, kann die allgemeine Schreibmethode wie folgt aussehen:
// 重复写了3次的“obj”obj.a = 2; obj.b = 3; obj.c = 4;
und verwenden mit In diesem Code wird die with-Anweisung verwendet, um das obj-Objekt zu verknüpfen, was bedeutet, dass innerhalb des with-Codeblocks jede Variable zunächst als lokale Variable betrachtet wird, wenn die lokale Variable denselben Namen wie eine Eigenschaft von hat das obj-Objekt, dann zeigt diese lokale Variable auf die Eigenschaft des obj-Objekts.
Nachteile von with
Im obigen Beispiel können wir sehen, dass with uns dabei helfen kann, den Code sehr gut zu vereinfachen. Aber warum wird es nicht empfohlen? Lassen Sie uns über die Mängel von with sprechen:Führt zu Datenlecks
Schauen wir uns den folgenden Teil des Codes an
with (obj) { a = 3; b = 4; c = 5; }
Lassen Sie uns zunächst den obigen Code analysieren. Im Beispiel werden zwei Objekte o1 und o2 erstellt. Einer von ihnen hat das Attribut a, der andere nicht.
Die Funktion akzeptiert einen formalen Parameter von obj, der eine Objektreferenz ist, und führt für das Objekt aus. Innerhalb des with-Blocks gibt es eine lexikalische Referenz auf a, die eigentlich eine LHS-Referenz ist, und ihr ist 2 zugewiesen. foo(obj)
Wenn wir o1 übergeben, with(obj) {...}
findet die Zuweisungsoperation o1.a und weist ihm 2 zu. Wenn o2 übergeben wird, verfügt o2 über keine Eigenschaft, sodass diese Eigenschaft nicht erstellt wird und o2.a undefiniert bleibt. a = 2
Hier müssen wir zum Mechanismus von
zurückkehren (Einzelheiten finden Sie unter LHS- und RHS-Abfragen in JavaScript).
Wenn wir o2 an with übergeben, ist der von with deklarierte Bereich o2, und LHS查询
beginnt von diesem Bereich bis a. Der Bezeichner a wird nicht im Bereich von o2, im Bereich von foo(…) und im globalen Bereich gefunden, daher wird im
nicht-strikten ModusLHS查询
automatisch eine globale Variable im globalen Bereich erstellt. im Im strikten Modus wird eine Ausnahme ausgelöst. ReferenceError
Leistungsabfall
Mit ändert oder erstellt neue Bereiche zur Laufzeit und überlistet dadurch andere lexikalische Bereiche, die zum Zeitpunkt des Schreibens definiert wurden. Mit kann der Code skalierbarer gemacht werden. Obwohl oben die Möglichkeit eines Datenlecks besteht, kann dies mit ein wenig Aufmerksamkeit vermieden werden.
Die Antwort ist nein. Schauen wir uns den folgenden Teil des Codes aus den spezifischen Gründen an.Testen Sie dann die Wirkung:function foo(obj) { with (obj) { a = 2; } }var o1 = { a: 3};var o2 = { b: 3} foo(o1); console.log(o1.a); //2foo(o2); console.log(o2.a); //underfinedconsole.log(a); //不好,a被泄漏到全局作用域上了Nach dem Login kopieren
In Code, der dieselbe Logik verarbeitet, beträgt die Laufzeit ohne with nur 4,63 ms. Die Nutzungsdauer beträgt bis zu 81,87 ms.
Warum ist das so?
Der Grund dafür ist, dass die JavaScript-Engine während der Kompilierungsphase mehrere Leistungsoptimierungen durchführt. Einige dieser Optimierungen basieren auf der Möglichkeit, den Code anhand seines Lexikons statisch zu analysieren und vorab festzulegen, wo alle Variablen und Funktionen definiert sind, sodass Bezeichner während der Ausführung schnell gefunden werden können.
Aber wenn die Engine „with“ im Code findet, kann sie einfach davon ausgehen, dass jede Beurteilung der Position des Bezeichners ungültig ist, da es keine Möglichkeit gibt, den Inhalt des Objekts zu kennen, das an „with“ übergeben wird, um den neuen lexikalischen Bereich zu erstellen . Was.
Der pessimistischste Fall ist, dass alle Optimierungen möglicherweise bedeutungslos sind, wenn mit angezeigt wird. Daher besteht der einfachste Ansatz der Engine darin, überhaupt keine Optimierung durchzuführen. Wenn der Code häufig with oder eval() verwendet, wird er definitiv sehr langsam ausgeführt. Ganz gleich, wie intelligent die Engine versucht, die Nebenwirkungen dieser pessimistischen Szenarien zu minimieren, sie kann nicht verhindern, dass der Code ohne diese Optimierungen langsamer läuft .In diesem Artikel wird die Verwendung von with in JavaScript erläutert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Gemeinsame Methoden zum Schreiben und Aufrufen von js-Funktionen
Das obige ist der detaillierte Inhalt vonVerwendung mit in JavaScript. 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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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 die Kartenschwenkfunktion mit JS und Baidu Map. Baidu Map ist eine weit verbreitete Kartendienstplattform, die häufig zur Anzeige geografischer Informationen, Positionierung und anderer Funktionen in der Webentwicklung verwendet wird. In diesem Artikel wird erläutert, wie Sie mit JS und der Baidu Map API die Kartenschwenkfunktion implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Vorbereitung Bevor Sie die Baidu Map API nutzen können, müssen Sie zunächst ein Entwicklerkonto auf der Baidu Map Open Platform (http://lbsyun.baidu.com/) beantragen und eine Anwendung erstellen. Erstellung abgeschlossen

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

So verwenden Sie PHP und JS zum Erstellen eines Aktienkerzendiagramms. Ein Aktienkerzendiagramm ist eine gängige technische Analysegrafik auf dem Aktienmarkt. Es hilft Anlegern, Aktien intuitiver zu verstehen, indem es Daten wie den Eröffnungskurs, den Schlusskurs, den Höchstkurs usw niedrigster Preis der Aktie. In diesem Artikel erfahren Sie anhand spezifischer Codebeispiele, wie Sie Aktienkerzendiagramme mit PHP und JS erstellen. 1. Vorbereitung Bevor wir beginnen, müssen wir die folgende Umgebung vorbereiten: 1. Ein Server, auf dem PHP 2. Ein Browser, der HTML5 und Canvas 3 unterstützt

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

Überblick über die Verwendung von JS und Baidu Maps zum Implementieren von Funktionen zur Verarbeitung von Kartenklickereignissen: In der Webentwicklung ist es häufig erforderlich, Kartenfunktionen zum Anzeigen des geografischen Standorts und geografischer Informationen zu verwenden. Die Verarbeitung von Klickereignissen auf der Karte ist ein häufig verwendeter und wichtiger Teil der Kartenfunktion. In diesem Artikel wird erläutert, wie Sie mithilfe von JS und der Baidu-Karten-API die Klickereignisverarbeitungsfunktion der Karte implementieren, und es werden spezifische Codebeispiele angegeben. Schritte: Importieren Sie die API-Datei von Baidu Map. Importieren Sie zunächst die Datei von Baidu Map API in die HTML-Datei.

Verwendung von JS und Baidu Maps zur Implementierung der Karten-Heatmap-Funktion Einführung: Mit der rasanten Entwicklung des Internets und mobiler Geräte sind Karten zu einem häufigen Anwendungsszenario geworden. Als visuelle Darstellungsmethode können Heatmaps uns helfen, die Verteilung von Daten intuitiver zu verstehen. In diesem Artikel wird die Verwendung von JS und der Baidu Map API zur Implementierung der Karten-Heatmap-Funktion vorgestellt und spezifische Codebeispiele bereitgestellt. Vorbereitung: Bevor Sie beginnen, müssen Sie Folgendes vorbereiten: ein Baidu-Entwicklerkonto, eine Anwendung erstellen und den entsprechenden AP erhalten

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

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.
