Schlüsselpunkte
- JavaScript -Feature -Erkennung (Testfunktionen, die Programmierer verwenden m?chten) ist nicht immer zuverl?ssig. Testen Sie beispielsweise ActiveXObject im Internet Explorer auf AJAX -Anforderungen, HTML -Attribute, die den DOM -Eigenschaften, Annahmen zum Benutzerverhalten (z. B. Erkennung von Berührungsger?ten) usw. zugeordnet sind, usw.
- Wenn die Merkmalserkennung fehlschl?gt, ist manchmal die Browsererkennung erforderlich. Es wird jedoch empfohlen, propriet?re Objekttests anstelle von Navigatorinformationen zu verwenden und sie zu verwenden, um Browser auszuschlie?en, anstatt sie einzuschlie?en.
- Seien Sie bei der Implementierung der Browsererkennung ?u?erst vorsichtig. Gehen Sie immer davon aus, dass es vollst?ndig mit Feature -Tests übereinstimmt, und suchen Sie nur nach Browsererkennung, wenn Sie wissen, dass eine Funktion nicht wie erwartet funktioniert. Darüber hinaus kann die für Objekt- und Merkmalstests verwendete Syntax die Erfolgsrate der Erkennung beeinflussen, sodass die Auswahl der richtigen Syntax entscheidend ist.
Einmal war die Browsererkennung die beste F?higkeit von JavaScript -Programmierern. Wenn wir wissen, dass einige Funktionen in IE5 funktionieren, jedoch nicht in Netscape 4, werden wir den Browser testen und den Code entsprechend ?ndern. Zum Beispiel:
if (navigator.userAgent.indexOf('MSIE 5') != -1) { // 我們認(rèn)為此瀏覽器是 IE5 }
Aber als ich zum ersten Mal in die Branche kam, hatte das Wettrüsten bereits begonnen! Anbieter fügen den Saiten von Benutzeragenten zus?tzliche Werte hinzu, sodass sie wie die Browser ihrer Konkurrenten und ihre eigenen aussehen. Dies ist beispielsweise Safari 5 für Mac:
<code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.59.10 (KHTML, like Gecko) Version/5.1.9 Safari/534.59.10</code>
Dies entspricht Tests für "Safari", "Webkit" und "KHTML" (die Konqueror -Codebasis, die Webkit basiert); Mozilla "" (aus historischen Gründen behauptet fast jeder Browser, Mozilla zu sein).
Der Zweck des Hinzufügens aller dieser Werte besteht darin, die Browsererkennung zu umgehen. Wenn das Skript davon ausgeht, dass nur Firefox bestimmte Funktionen bew?ltigen kann, kann Safari ausgeschlossen werden, auch wenn es funktioniert. Vergessen Sie nicht, dass Benutzer ihren Benutzeragenten selbst ?ndern k?nnen. Ich habe meinen Browser so festgelegt, dass ich "GoogleBot/1.0" erkannte, damit ich auf das zugreifen kann, was der Site -Besitzer nur für das Kriechen h?lt!
Im Laufe der Zeit ist diese Art von Browsererkennung zu einem unm?glichen Chaos geworden und ist weitgehend nicht mehr in Gebrauch, ersetzt durch etwas Besseres - Feature -Erkennung.
Die Funktionserkennung besteht nur darin, die von uns gebrauchten Funktionen zu testen. Wenn wir beispielsweise getBoundingClientRect
ben?tigen (die Position eines Elements relativ zum Ansichtsfenster erhalten), ist es wichtig, ob der Browser es nicht kann, nicht welcher Browser es ist. schlimmer als das Testmerkmal selbst:
if (typeof document.documentElement.getBoundingClientRect != "undefined") { // 瀏覽器支持此函數(shù) }
oder wir ...?
Aber die Wahrheit ist - die Erkennung von Merkmalen ist nicht ganz zuverl?ssig - manchmal fehlschl?gt sie. Schauen wir uns jetzt einige Beispiele an und sehen, was wir tun k?nnen, um jeden Fall zu l?sen.
ActiveX -Objekt
Das vielleicht berühmteste Beispiel für den Fehler bei der Erkennung von Funktionen ist das Testen von ActiveXObject für AJAX -Anforderungen im Internet Explorer.
activeX ist ein Beispiel für versp?tete Objekte, und die praktische Bedeutung ist, dass Sie nicht wissen, ob es unterstützt wird , bis Sie versuchen, es zu verwenden. Wenn der Benutzer ActiveX deaktiviert, wirft der folgende Code daher einen Fehler aus:
if (navigator.userAgent.indexOf('MSIE 5') != -1) { // 我們認(rèn)為此瀏覽器是 IE5 }Um dies zu beheben, müssen wir die Ausnahmebehandlung verwenden -
Versuchen Sie das Objekt instanziieren, fangen alle Fehler und verarbeiten Sie es entsprechend:
<code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.59.10 (KHTML, like Gecko) Version/5.1.9 Safari/534.59.10</code>HTML -Attribut, das dem DOM -Attribut
zugeordnet ist
Attributzuordnung wird h?ufig verwendet, um die Unterstützung von APIs mit HTML5 -Eigenschaften zu testen. überprüfen Sie beispielsweise, ob ein Element mit die draggierbare API unterstützt, indem Sie nach draggablen Eigenschaften suchen: [draggable="true"]
if (typeof document.documentElement.getBoundingClientRect != "undefined") { // 瀏覽器支持此函數(shù) }Das Problem hier ist, dass IE8 oder früher alle
HTML -Eigenschaften auf DOM -Eigenschaften automatisch zugeordnet werden. Aus diesem Grund ist in diesen ?lteren Versionen so verwirrend, da es überhaupt keine Eigenschaften, sondern DOM -Eigenschaften zurückgibt.
getAttribute
Dies bedeutet, wenn wir ein Element verwenden, das bereits das Attribut
dann, selbst wenn sie nicht unterstützt werden, wird IE8 oder früher
fürif (typeof window.ActiveXObject != "undefined") { var request = new ActiveXObject("Microsoft.XMLHTTP"); }zurückgegeben.
true
Attribut kann alles sein: ("draggable" in element)
Aber das Ergebnis wird das gleiche sein - IE8 oder früher wird
fürif (typeof window.ActiveXObject != "undefined") { try { var request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (ex) { request = null; } if (request !== null) { //... 我們有一個(gè)請(qǐng)求對(duì)象 } }zurückgeben.
true
In diesem Fall besteht die L?sung darin, ein Element zu verwenden, das dieses Attribut zum Testen nicht hat. Die sicherste M?glichkeit besteht darin, das erstellte Element zu verwenden: ("nonsense" in element)
Annahmen über Benutzerverhalten
if ("draggable" in element) { // 瀏覽器支持拖放 }Sie haben m?glicherweise den folgenden Code verwendet, um Berührungsger?te zu erkennen:
Die meisten Touch -Ger?te implementieren manuelle Verz?gerungen, bevor ein Klickereignis ausgel?st wird (normalerweise etwa 300 Millisekunden), um zu vermeiden, dass Sie auf Elemente klicken und gleichzeitig klicken. Dadurch fühlt sich die Anwendung jedoch tr?ge und nicht mehr an. Daher verwenden Entwickler diesen Funktionstest manchmal, um das Ereignis zu geben:
<div draggable="true"> ... </div>
Diese Bedingung stammt jedoch aus einem
-Fehler des<div nonsense="true"> ... </div>- Da das Ger?t Berührung unterstützt, wird Berührung verwendet. Aber was ist mit Touchscreen -Laptops? Der Benutzer berührt m?glicherweise den Bildschirm oder verwendet eine Maus oder einen Trackpad.
In diesem Fall besteht die L?sung darin, Ereignisunterstützung überhaupt nicht zu testen - stattdessen zwei
Ereignisse gleichzeitig zu binden und dann zu verhindern, dass die Berührung Klicks erzeugt: Dies ist schmerzhaft, aber manchmal müssen wir nicht das Feature testen - , sondern der Browser - weil ein bestimmter Browser behauptet, etwas zu unterstützen, das nicht funktioniert. Ein aktuelles Beispiel ist Feature -Test schl?gt hier aus, da Opera 12 behauptet, dies zu unterstützen. Es funktioniert einfach nicht: Nun, wenn Sie nur versuchen m?chten, ein benutzerdefiniertes Drag -Image hinzuzufügen und den Standardwert ohne Unterstützung beizubehalten (was passieren wird), kann dies in Ordnung sein. Aber was ist, wenn Ihre Anwendung benutzerdefinierte Bilder ben?tigt, damit Browser, die sie nicht unterstützen, eine v?llig andere Implementierung verwenden sollte (d. H. Verwenden Sie benutzerdefinierte JavaScript, um alle Dragverhalten zu implementieren)?
Oder was ist, wenn der Browser bestimmte Merkmale implementiert, aber unvermeidliche Rendering -Fehler gibt? Manchmal haben wir keine andere Wahl, als den problematischen Browser explizit zu erkennen und ihn aus den Funktionen auszuschlie?en, die er mit dem mit der Verwendung versuchte. Das Problem wird also - was ist der sicherste Weg, um die Browsererkennung zu erzielen? Ich habe zwei Vorschl?ge:
Wir haben festgestellt, dass Benutzeragentenketten ein unzuverl?ssiges Chaos sind, aber Anbieterketten tats?chlich ziemlich vorhersehbar sind und verwendet werden k?nnen, um Chrom oder Safari zuverl?ssig zu testen: Die goldene Regel für all dies ist ?u?erst vorsichtig. Stellen Sie sicher Bekannte Merkmale (dies ist der Zweck des Feature -Tests)
Testsyntax ausw?hlen
Vor dem Ende m?chte ich die verschiedenen Arten von Syntax überprüfen, die wir für Objekt- und Eigenschaftstests verwenden k?nnen. Zum Beispiel ist die folgende Syntax in den letzten Jahren üblich geworden: Wir konnten es in der Vergangenheit nicht verwenden, weil IE5 und seine ?hnlichen Produkte aufgrund von Syntax Fehler werfen würden. im Wesentlichen ist es genau das gleiche wie die folgenden, aber es ist kürzer zu schreiben: Die Testbedingungen beruhen jedoch normalerweise auf automatische Typumwandlung: Wir haben diese Syntax früher in einigen Browser -Objekt -Tests (z. B. Aber wir testen m?glicherweise etwas, das null oder leere Zeichenfolgen effektiv zurückgibt, die beide auf False bewerten. Zum Beispiel wird das Es wird nur zu true bewertet, wenn das Die allgemeine Regel lautet: Die Herstellung der automatischen Typumwandlung ist für Objekte und Funktionen sicher, aber nicht unbedingt sicher für Zeichenfolgen und Zahlen oder Werte, die null sein k?nnen. , das gesagt - wenn Sie es sicher verwenden k?nnen, tun Sie es, weil es in modernen Browsern normalerweise viel schneller ist (wahrscheinlich weil sie für diese Art von Zustand optimiert sind). Weitere Informationen hierzu finden Sie unter: Automatische Konvertierung in der realen Welt. JavaScript -Feature -Erkennung ist eine Technologie, die von Entwicklern verwendet wird, um festzustellen, ob der Browser eines Benutzers eine bestimmte Funktion oder API unterstützt. Dies ist entscheidend, da nicht alle Browser alle Funktionen von JavaScript unterstützen. Durch die Verwendung von Feature -Erkennung k?nnen Entwickler alternative L?sungen oder Fallbacks für nicht unterstützte Funktionen bereitstellen und sicherstellen, dass Websites oder Anwendungen in verschiedenen Browsern korrekt ausgeführt werden. Dies verbessert die Benutzererfahrung und gew?hrleistet die Kompatibilit?t. JavaScript -Merkmalserkennung kann aus mehreren Gründen fehlschlagen. Ein h?ufiger Grund ist, dass der Feature -Erkennungscode falsch implementiert wird. Wenn der Code beispielsweise nach Eigenschaften prüft, die im Objekt nicht vorhanden sind, gibt er undefinierter und führt zu einem falsch negativen Negativ zurück. Ein weiterer Grund k?nnte eine Browser -Quirk oder ein Fehler sein, der dazu führen kann, dass die Merkmalserkennung ungenaue Ergebnisse liefert. Die Funktionserkennung von Features besteht darin, zu überprüfen, ob der Browser eines Benutzers eine bestimmte Funktion oder eine bestimmte API unterstützt, w?hrend die Browsererkennung den Browser und die Version des Benutzers erkennt. W?hrend beide Techniken so konzipiert sind, dass die Kompatibilit?t und Funktionalit?t sichergestellt wird, wird die Erkennung von Merkmalen h?ufig als bessere Praxis angesehen, da sie direkt auf Funktionen überprüft, anstatt ihre Unterstützung basierend auf dem Browsertyp oder -version zu übernehmen. Sie k?nnen das Attribut feature.js ist ein leichtes, schnelles und einfaches JavaScript -Dienstprogramm zur Erkennung von Funktionen. Es bietet eine benutzerfreundliche API, mit der Entwickler testen k?nnen, ob der Browser bestimmte Funktionen unterstützt. Dies bietet eine Sicherungsl?sung oder alternative L?sung für nicht unterstützte Funktionen, wodurch die Kompatibilit?t und Funktionalit?t der Website oder Anwendung verbessert wird. modernizr ist eine JavaScript -Bibliothek, die Entwicklern hilft, HTML5- und CSS3 -Funktionen zu nutzen und gleichzeitig die Kompatibilit?t mit ?lteren Browsern aufrechtzuerhalten. Es wird die Funktionserkennung verwendet, um zu überprüfen, ob der Browser bestimmte Funktionen unterstützt und HTML -Elemente Klassen hinzufügt, sodass Sie bestimmte Browserfunktionen in Stylesheets oder JavaScript finden k?nnen. Ger?te-Detektor-JS ist ein leistungsstarkes Tool für die Erkennung von Ger?ten. Es analysiert User Agent Strings und erkennt Smartphones, Tablets, Desktops, Fernseher und andere Ger?te. Es erkennt auch Browser, Motoren, Betriebssysteme und andere nützliche Informationen. Sie k?nnen dieses Paket verwenden, um das Verhalten einer Website oder Anwendung basierend auf den erkannten Ger?ten anzupassen. Einige Best Practices für die Implementierung von Funktionen sind: Verwenden von zuverl?ssigen und getesteten Bibliotheken wie Modernizr oder Feature.js, gründlich testen Sie Ihren Feature -Erkennungscode auf verschiedenen Browsern und Ger?ten, da nicht unterstützte Funktionen alternative L?sungen oder Fallbacks liefern und die übernahme von Merkmalsunterstützung vermeiden k?nnen basierend auf Browsertyp oder -version. Ja, die Erkennung von Funktionen kann die Leistung der Website verbessern. Indem Sie nicht unterstützte Funktionen erkennen und alternative L?sungen oder Fallback -L?sungen bereitstellen, k?nnen Sie verhindern, dass unn?tiger Code im Browser ausgeführt wird. Dies verkürzt die Ladezeit und verbessert die Gesamtleistung der Website. Aufgrund der schnellen Entwicklung der Webentwicklung kann es schwierig sein, die neuesten Funktionen zu verstehen, die von verschiedenen Browsern unterstützt werden. Ressourcen wie das Mozilla Developer Network (MDN), kann ich jedoch verwenden, und JavaScript -Dokumentation kann die neuesten Informationen zur Funktionsunterstützung in verschiedenen Browsern liefern. Das obige ist der detaillierte Inhalt vonWenn die Erkennung von JavaScript -Funktionen fehlschl?gt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!if (navigator.userAgent.indexOf('MSIE 5') != -1) {
// 我們認(rèn)為此瀏覽器是 IE5
}
Dinge, die überhaupt nicht funktionieren
setDragImage()
in Opera 12 (was eine M?glichkeit ist, dataTransfer
Objekte zu ziehen und zu fallen). <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.59.10 (KHTML, like Gecko) Version/5.1.9 Safari/534.59.10</code>
Objekterkennungsoper 12 oder früher verwenden, sodass wir diesen Ausschluss verwenden k?nnen, um die draggable Unterstützung zu testen: window.opera
if (typeof document.documentElement.getBoundingClientRect != "undefined") {
// 瀏覽器支持此函數(shù)
}
if (typeof window.ActiveXObject != "undefined") {
var request = new ActiveXObject("Microsoft.XMLHTTP");
}
verwendet werden, um die Unterstützung bestimmter Merkmale in einem bestimmten Browser zu bestimmen, oder im Notfall pr?zisere Browserbedingungen definieren: if (typeof window.ActiveXObject != "undefined") {
try {
var request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (ex) {
request = null;
}
if (request !== null) {
//... 我們有一個(gè)請(qǐng)求對(duì)象
}
}
if ("draggable" in element) {
// 瀏覽器支持拖放
}
nehmen Sie im Grunde immer an, dass der Feature -Test vollst?ndig im Einklang mit dem Feature -Test steht - es sei denn, Sie wissen, dass dies nicht der Fall ist. Die Funktion funktioniert wie erwartet. if (navigator.userAgent.indexOf('MSIE 5') != -1) {
// 我們認(rèn)為此瀏覽器是 IE5
}
<code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.59.10 (KHTML, like Gecko) Version/5.1.9 Safari/534.59.10</code>
if (typeof document.documentElement.getBoundingClientRect != "undefined") {
// 瀏覽器支持此函數(shù)
}
window.opera
Tests) verwendet, was aufgrund der Art und Weise, wie Objekte bewerten als falsch bewertet werden. style.maxWidth
Attribut manchmal verwendet, um IE6: if (typeof window.ActiveXObject != "undefined") {
var request = new ActiveXObject("Microsoft.XMLHTTP");
}
maxWidth
Attribut unterstützt wird und der den Autor definierte Wert hat. Wenn wir also den Test so schreiben, kann er fehlschlagen: if (typeof window.ActiveXObject != "undefined") {
try {
var request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (ex) {
request = null;
}
if (request !== null) {
//... 我們有一個(gè)請(qǐng)求對(duì)象
}
}
h?ufig gestellte Fragen zur JavaScript -Funktionserkennung
Was ist die Erkennung von JavaScript -Funktionen und warum ist es wichtig?
Wie f?llt die Erkennung von JavaScript -Funktionen aus?
Was ist der Unterschied zwischen Merkmalserkennung und Browsererkennung?
Wie kann ich JavaScript verwenden, um mobile Ger?te zu erkennen?
navigator.userAgent
in JavaScript verwenden, um mobile Ger?te zu erkennen. Diese Eigenschaft gibt eine Zeichenfolge zurück, die den User Agent Header des Browsers darstellt. Durch die überprüfung von bestimmten Schlüsselw?rtern in dieser Zeichenfolge (z. B. "Android", "iPhone" oder "iPad") k?nnen Sie feststellen, ob sich der Benutzer auf einem mobilen Ger?t befindet. Was ist feature.js und wie hilft es bei der Funktionserkennung?
Was ist Modernizr und wie hilft es bei der Erkennung von Funktionen?
Wie verwenden Sie das Paket für Ger?te-Detektor-JS zur Funktionserkennung?
Das Paket Was sind einige Best Practices für die Implementierung der Funktionserkennung?
Kann die Erkennung von Erkenntnissen helfen, die Leistung der Website zu verbessern?
Wie kann man die neuesten Funktionen verstehen, die von verschiedenen Browsern unterstützt werden?

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

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)

Es gibt drei g?ngige M?glichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abh?ngigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengen?hten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorg?nge zu vereinfachen. 3.Node-Fetch bietet einen Stil ?hnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax

JavaScript -Datentypen sind in primitive Typen und Referenztypen unterteilt. Zu den primitiven Typen geh?ren String, Anzahl, Boolesche, Null, undefiniertes und Symbol. Die Werte sind unver?nderlich und Kopien werden bei der Zuweisung von Werten kopiert, sodass sie sich nicht gegenseitig beeinflussen. Referenztypen wie Objekte, Arrays und Funktionen speichern Speicheradressen, und Variablen, die auf dasselbe Objekt zeigen, wirkt sich gegenseitig aus. Typeof und Instanz k?nnen verwendet werden, um die Typen zu bestimmen, aber auf die historischen Probleme der TypeOfnull zu achten. Das Verst?ndnis dieser beiden Arten von Unterschieden kann dazu beitragen, einen stabileren und zuverl?ssigeren Code zu schreiben.

Hallo, JavaScript -Entwickler! Willkommen in den JavaScript -Nachrichten dieser Woche! Diese Woche konzentrieren wir uns auf: Oracas Markenstreit mit Deno, neue JavaScript -Zeitobjekte werden von Browsern, Google Chrome -Updates und einigen leistungsstarken Entwickler -Tools unterstützt. Fangen wir an! Der Markenstreit von Oracle mit dem Versuch von Deno Oracle, ein "JavaScript" -Marke zu registrieren, hat Kontroversen verursacht. Ryan Dahl, der Sch?pfer von Node.js und Deno, hat eine Petition zur Absage der Marke eingereicht, und er glaubt, dass JavaScript ein offener Standard ist und nicht von Oracle verwendet werden sollte

Cacheapi ist ein Tool, das der Browser zur Cache -Netzwerkanfragen bereitstellt, das h?ufig in Verbindung mit dem Servicearbeiter verwendet wird, um die Leistung der Website und die Offline -Erfahrung zu verbessern. 1. Es erm?glicht Entwicklern, Ressourcen wie Skripte, Stilbl?tter, Bilder usw. Zu speichern; 2. Es kann die Cache -Antworten entsprechend den Anfragen übereinstimmen. 3. Es unterstützt das L?schen bestimmter Caches oder das L?schen des gesamten Cache. 4.. Es kann Cache -Priorit?ts- oder Netzwerkpriorit?tsstrategien durch Servicearbeiter implementieren, die sich auf Fetch -Ereignisse anh?ren. 5. Es wird h?ufig für die Offline -Unterstützung verwendet, die wiederholte Zugriffsgeschwindigkeit, die Vorspannungs -Schlüsselressourcen und den Inhalt des Hintergrundaktualisierungss beschleunigen. 6. Wenn Sie es verwenden, müssen Sie auf die Cache -Versionskontrolle, Speicherbeschr?nkungen und den Unterschied zum HTTP -Caching -Mechanismus achten.

Versprechen ist der Kernmechanismus für den Umgang mit asynchronen Operationen in JavaScript. Das Verst?ndnis von Kettenanrufen, Fehlerbehebung und Kombination ist der Schlüssel zum Beherrschen ihrer Anwendungen. 1. Der Kettenaufruf gibt ein neues Versprechen durch .then () zurück, um asynchrone Prozessverkampferung zu realisieren. Jeder. Dann () erh?lt das vorherige Ergebnis und kann einen Wert oder ein Versprechen zurückgeben; 2. Die Fehlerbehandlung sollte .Catch () verwenden, um Ausnahmen zu fangen, um stille Ausf?lle zu vermeiden, und den Standardwert im Fang zurückgeben, um den Prozess fortzusetzen. 3. Combinatoren wie Promise.All () (erfolgreich erfolgreich erfolgreich nach allen Erfolg), Versprechen.Race () (Die erste Fertigstellung wird zurückgegeben) und Versprechen.Allsettled () (Warten auf alle Fertigstellungen)

JavaScript-Array-integrierte Methoden wie .Map (), .filter () und .Reduce () k?nnen die Datenverarbeitung vereinfachen. 1) .Map () wird verwendet, um Elemente eins in eins um Neuarrays zu konvertieren; 2) .Filter () wird verwendet, um Elemente durch Bedingung zu filtern; 3) .Reduce () wird verwendet, um Daten als einzelner Wert zu aggregieren; Missbrauch sollte bei der Verwendung vermieden werden, was zu Nebenwirkungen oder Leistungsproblemen führt.

Die Ereignisschleife von JavaScript verwaltet asynchrone Vorg?nge, indem sie Call -Stapel, Webapis und Task -Warteschlangen koordinieren. 1. Der Anrufstack führt synchronen Code aus, und wenn er auf asynchrone Aufgaben begegnet, wird er zur Verarbeitung an Webapi übergeben. 2. Nachdem das Webapi die Aufgabe im Hintergrund abgeschlossen hat, wird der Rückruf in die entsprechende Warteschlange (Makroaufgabe oder Micro -Aufgabe) eingebaut. 3. Die Ereignisschleife prüft, ob der Anrufstapel leer ist. Wenn es leer ist, wird der Rückruf aus der Warteschlange herausgenommen und zur Ausführung in den Anrufstapel geschoben. V. 5. Das Verst?ndnis der Ereignisschleife hilft zu vermeiden, den Haupt -Thread zu blockieren und die Codeausführungsreihenfolge zu optimieren.

Ereignisblasen verbreiten sich vom Zielelement nach au?en zum Vorfahrknoten aus, w?hrend Ereignisfassungen sich von der ?u?eren Schicht nach innen zum Zielelement ausbreiten. 1. Ereignisblasen: Nach dem Klicken auf das untergeordnete Element l?st das Ereignis den H?rer des übergeordneten Elements nach oben aus. Nach dem Klicken auf die Schaltfl?che gibt es beispielsweise zuerst die untergeordnete und dann entzündete Eltern aus. 2. Ereigniserfassung: Stellen Sie den dritten Parameter auf True ein, so dass der H?rer in der Erfassungsstufe ausgeführt wird, z. B. das Ausl?sen des Capture -Listeners des übergeordneten Elements, bevor Sie auf die Schaltfl?che klicken. 3. Praktische Verwendungszwecke umfassen ein einheitliches Management von Ereignissen für Kinderelemente, Vorverarbeitung und Leistungsoptimierung von Abfangen. V.
