Heim >Web-Frontend >js-Tutorial >Vollständiges Javascript – von Grundkenntnissen bis zu Fortgeschrittenen
Variablen und Datentypen: var, let, const.
Primitive Typen: Zeichenfolge, Zahl, Boolescher Wert, Null, undefiniert, Symbol.
Null vs. Undefiniert (imp):
a. null: wird einer Variablen explizit zugewiesen, um anzuzeigen, dass sie absichtlich leer ist oder keinen Wert hat.
b. undefiniert: bedeutet, dass eine Variable deklariert wurde, aber kein Wert zugewiesen wurde, oder dass eine Funktion nichts zurückgibt.
Typ: Es ist ein eigener Typ, undefiniert.
Referenztypen: Objekt, Array, Funktion.
Kontrollstrukturen: if, else, switch
Schleifen: for, while, do-while, for…of, for…in
Funktionen:
A. Funktionsdeklarationen vs. Ausdrücke
B. Pfeilfunktionen
C. Sofort aufgerufener Funktionsausdruck (IIFE)
D. Funktionen höherer Ordnung (Funktionen, die andere Funktionen als Argumente annehmen oder zurückgeben)
e. Rückruffunktionen
Versprechen: Es ist eine Möglichkeit, asynchrone Vorgänge abzuwickeln.
A. Promise.all()
B. Promise.resolve()
C. Promise.then()
D. Promise.any()
e. Promise.race()
F. Promise.reject()
g.Promise.allSettled()
Async/await: Ermöglicht Ihnen, asynchronen Code auf eine synchronere Weise zu schreiben.
Callback-Funktion: Ein Callback ist eine Funktion, die als Argument an eine andere Funktion übergeben und nach Abschluss dieser Hauptfunktion ausgeführt wird.
Abschlüsse: Ein Abschluss in JavaScript ist eine Funktion, die Zugriff auf Variablen in ihrem übergeordneten Bereich hat, auch nachdem die übergeordnete Funktion zurückgekehrt ist.
Geltungsbereich:
A. Globaler vs. lokaler Geltungsbereich
B. Funktionsumfang, Blockumfang (mit let und const)
Heben:
A. Variables Heben
B. Funktion Heben
Ereignisschleife und Aufgabenwarteschlange (Mikrotasks und Makrotasks)
Ausführungskontext: Ein Ausführungskontext ist die Umgebung, in der der Code ausgeführt wird.
A. Globaler Ausführungskontext (GEC)
B. Funktionsausführungskontext
Bereichskette und Ausführungskontexte:
Die Scope-Kette ist ein entscheidendes Konzept, das bestimmt, wie Variablen in verschiedenen Kontexten nachgeschlagen werden, wenn eine Funktion oder ein Codeblock ausgeführt wird
Ein Ausführungskontext ist ein abstraktes Konzept, das die Umgebung darstellt, in der der JavaScript-Code ausgewertet und ausgeführt wird. Jedes Mal, wenn eine Funktion aufgerufen oder ein Codeblock ausgeführt wird, wird ein neuer Ausführungskontext erstellt.
Memoisierung: Hierbei handelt es sich um eine Technik zur Optimierung von Funktionen, indem die Ergebnisse teurer Funktionsaufrufe zwischengespeichert und diese Ergebnisse wiederverwendet werden, wenn dieselben Eingaben erneut auftreten. Dies hilft, redundante Berechnungen zu vermeiden und die Leistung in Szenarien zu verbessern, in denen eine Funktion wiederholt mit denselben Argumenten aufgerufen wird.
Entprellen: Begrenzt die Rate, mit der eine Funktion aufgerufen wird. Hilft dabei, mehrere Funktionsaufrufe für Ereignisse zu vermeiden, die häufig ausgelöst werden, z. B. Tastenanschläge oder Größenänderungsereignisse.
Drosselung: Stellt sicher, dass eine Funktion höchstens einmal in einem bestimmten Zeitraum aufgerufen wird, unabhängig davon, wie oft das Ereignis ausgelöst wird.
Currying: Warum: Currying wandelt eine Funktion, die mehrere Argumente annimmt, in eine Reihe von Funktionen um, die jeweils ein Argument annehmen. Dies ist nützlich, um Argumente teilweise anzuwenden.
Verwendungszweck: Funktionale Programmierung, Wiederverwendung von Funktionen mit festen Argumenten.
setTimeout(), setInterval() und clearTimeout() :
A. setTimeout(): Führt eine Funktion nach einer angegebenen Verzögerung (in Millisekunden) aus.
B. setInterval(): Führt eine Funktion wiederholt in einem angegebenen Intervall (in Millisekunden) aus.
C. clearTimeout(): Bricht einen zuvor geplanten setTimeout()-Vorgang ab.
Vorlagenliterale: Vorlagenliterale, auch als Vorlagenzeichenfolgen bekannt, sind eine Funktion in JavaScript, die eine einfachere Zeichenfolgeninterpolation und mehrzeilige Zeichenfolgen ermöglicht. Sie werden durch Backticks (`) anstelle von einfachen oder doppelten Anführungszeichen gekennzeichnet.
Lokaler Speicher und Sitzungsspeicher:
localStorage: Bekannt dafür, Daten dauerhaft über Browsersitzungen hinweg zu speichern und auch nach dem Schließen des Browsers verfügbar zu bleiben.
sessionStorage: Bekannt dafür, Daten nur für die Dauer einer einzelnen Browsersitzung zu speichern und zu löschen, wenn der Tab oder Browser geschlossen wird.
Reguläre Ausdrücke (RegExp): Ein regulärer Ausdruck (RegEx oder RegExp) ist eine Zeichenfolge, die ein Suchmuster definiert. RegEx wird hauptsächlich zum Suchen und Bearbeiten von Zeichenfolgen verwendet und ermöglicht das Suchen, Abgleichen und Ersetzen von Mustern im Text.
dieses Schlüsselwort: Dieses Schlüsselwort bezieht sich auf den Kontext, in dem eine Funktion ausgeführt wird. Es handelt sich um ein spezielles Schlüsselwort, das sich je nach Aufruf einer Funktion unterschiedlich verhält.
Im globalen Ausführungskontext (außerhalb jeder Funktion) bezieht sich dies auf das globale Objekt (Fenster in Browsern, global in Node.js).
In einer regulären Funktion (nicht im strikten Modus) bezieht sich dies auf das globale Objekt (Fenster im Browser).
Wenn eine Funktion als Methode eines Objekts aufgerufen wird, bezieht sich dies auf das Objekt, für das die Methode aufgerufen wird.
OOPs in JavaScript:
Klassen in JavaScript
Klassen und Objekte in JavaScript
So erstellen Sie eine JavaScript-Klasse in ES6
dieses Schlüsselwort JavaScript
Neues Schlüsselwort in JavaScript
Objektkonstruktor in JavaScript
Vererbung in JavaScript
Kapselung in JavaScript
Statische Methoden in JavaScript
OOP in JavaScript
Getter und Setter in JavaScript
Betreiber:
A. Arithmetische Operatoren: , -, *, /, %
B. Vergleichsoperatoren: ==, ===, !=, !==, >, <, >=, <=
C. Logische Operatoren: &&, ||, !
D. Zuweisungsoperatoren: =, =, -=, *=, /=
e. Unäre Operatoren: , --, typeof, delete
F. Ternärer Operator (imp): Bedingung? Ausdruck1: Ausdruck2
Pause und weitermachen
Pause (die Schleife verlassen)
fortfahren (zur nächsten Iteration springen)
Parameter sind die in der Funktionsdeklaration (oder Funktionssignatur) definierten Variablen, die angeben, welche Art von Werten die Funktion beim Aufruf erwartet.
Argumente sind die tatsächlichen Werte, die an die Funktion übergeben werden, wenn sie aufgerufen wird.
a. Array-Destrukturierung
B. Objektzerstörung
Der Rest-Operator wird verwendet, um mehrere Elemente zu sammeln und sie in einem einzigen Array oder Objekt zu bündeln. Es wird hauptsächlich in Funktionsparametern zum Sammeln von Argumenten oder bei der Destrukturierung zum Sammeln verbleibender Eigenschaften verwendet.
Der Spread-Operator wird verwendet, um Elemente eines Arrays oder Objekts in einzelne Elemente oder Eigenschaften zu entpacken. Es ermöglicht Ihnen, ein Iterable (Array oder Objekt) in einzelne Elemente oder Eigenschaften zu erweitern oder zu „verteilen“.
31.Ereignisdelegation: Verwenden von Ereignis-Listenern für übergeordnete Elemente, um Ereignisse untergeordneter Elemente zu verarbeiten
Funktionen höherer Ordnung: Eine Funktion höherer Ordnung ist eine Funktion, die entweder eine oder mehrere Funktionen als Argumente akzeptiert oder eine Funktion als Ergebnis zurückgibt.
Anonyme Funktionen: Eine anonyme Funktion ist eine Funktion, die keinen Namen hat. Diese Funktionen werden normalerweise inline definiert und können Variablen zugewiesen, als Argumente übergeben oder an anderen Stellen verwendet werden, an denen eine Funktion erforderlich ist.
Hauptmerkmale:
Kein Name: Die Funktion wird ohne Namen definiert.
Häufig inline verwendet: Wird häufig als Rückruffunktionen verwendet oder als Argumente an Funktionen höherer Ordnung übergeben.
Kann Variablen zugewiesen werden: Kann wie jeder andere Wert Variablen oder Eigenschaften zugewiesen werden.
So funktioniert das lexikalische Scoping:
Wenn Sie eine Funktion definieren, hat sie Zugriff auf Variablen, die sich innerhalb ihres Gültigkeitsbereichs befinden (d. h. Variablen, die innerhalb der Funktion deklariert wurden, und Variablen aus äußeren Funktionen, einschließlich des globalen Gültigkeitsbereichs).
Wenn eine Funktion in einer anderen verschachtelt ist, kann die innere Funktion auf Variablen der äußeren Funktion zugreifen (dies wird als Abschlüsse bezeichnet).
push(), pop(), shift(), unshift()
concat(), Slice(), Splice()
map(), filter(), Reduce(), forEach()
find(), findIndex()
sort(), reverse()
join(), split()
indexOf(), include(), lastIndexOf()
Object.assign(), Object.create(), Object.keys(), Object.values(), Object.entries(), Object.hasOwn(), Object.freeze(), Object.seal()
Prototypkette:
Vererbung mithilfe von Prototypen
Klassensyntax, Konstruktoren, Methoden
Vererbung mit Extends
super() und super() Konstruktor
call(), apply() und bind(): zur Steuerung des Kontexts davon
Event sprudeln und einfangen:
Ereignis-Bubbling tritt auf, wenn ein Ereignis für ein Element ausgelöst wird und das Ereignis dann vom Zielelement zu seinen Vorgängerelementen im DOM-Baum „aufsteigt“. In den meisten Fällen sprudeln Ereignisse automatisch in die Luft, es sei denn, Sie verhindern dies ausdrücklich
Event Capturing ist das Gegenteil von Event Bubbling. Das Ereignis wird zuerst vom Stammelement erfasst und dann an das Zielelement weitergeleitet.
Generatoren und Iteratoren:
Warum: Generatoren ermöglichen eine verzögerte Auswertung, was bedeutet, dass sie Werte bei Bedarf und nicht alle auf einmal liefern. Nützlich für große Datensätze oder unendliche Sequenzen.
Verwendungszweck: Implementierung benutzerdefinierter Iteratoren, verzögerte Auswertung von Sequenzen.
WeakMap und WeakSet :
Warum: Hilft bei der Speicherverwaltung in JavaScript. WeakMap und WeakSet ermöglichen die Garbage Collection von Schlüsseln oder Werten, wenn keine weiteren Verweise darauf vorhanden sind.
Verwendungszweck: Verwalten von Verweisen auf Objekte, ohne die Garbage Collection zu verhindern. Zum Beispiel das Zwischenspeichern von DOM-Knoten, bei denen Sie keine Speicherlecks erzeugen möchten.
Polyfill:
Warum: Fügt Unterstützung für Funktionen hinzu, die in älteren Browsern nicht nativ verfügbar sind, indem Code bereitgestellt wird, der moderne Funktionen nachahmt.
Verwendungszweck: Gewährleistung der Kompatibilität mit älteren Browsern (z. B. älteren Versionen von Internet Explorer) für neue JavaScript-Funktionen wie Promise, Fetch usw.
Prototypische Vererbung:
Warum: JavaScript verwendet Prototypen für die Vererbung und nicht die klassische objektorientierte Vererbung. Das Verständnis der Funktionsweise der Prototypenkette ist der Schlüssel zum Verständnis des Vererbungsmodells von JavaScript.
Verwendungszweck: Erstellen von Objekthierarchien, Hinzufügen von Methoden zu Konstruktoren.
Cookies: Speichern und Abrufen von Cookies in JavaScript
Erweiterte Array-Methoden
Array.prototype.find(): Das erste Element in einem Array finden, das einer Bedingung entspricht
Array.prototype.filter(): Elemente basierend auf einer Bedingung filtern
Array.prototype.reduce(): Reduzieren eines Arrays auf einen einzelnen Wert
Array.prototype.map(): Erstellen eines neuen Arrays durch Anwenden einer Funktion auf jedes Element
Array.prototype.sort(): Sortieren von Arrays mit benutzerdefinierten Sortierfunktionen
Modulmuster: Code in Module kapseln
Singleton-Muster: Sicherstellen, dass eine Klasse nur eine Instanz hat
Beobachtermuster: Mehrere Objekte benachrichtigen, wenn sich der Zustand eines Objekts ändert.
Factory-Muster: Bietet eine Möglichkeit, Objekte zu instanziieren und gleichzeitig die Erstellungslogik vom Rest der Anwendung getrennt zu halten.
Strategiemuster: Ermöglicht Ihnen, eine Strategie (Algorithmus) für einen bestimmten Vorgang zu definieren und diese zur Laufzeit zu ändern.
Dekoratormuster: Dynamisches Hinzufügen von Verhalten zu einem Objekt, ohne seine Struktur zu beeinflussen.
Lazy Loading: Das Laden von Inhalten wird verzögert, bis sie benötigt werden.
Arbeiten mit JSON:
JSON-Grundlagen
JSON-Syntax, Parsen mit JSON.parse(), Stringifizieren mit JSON.stringify()
Arbeiten mit APIs
Abrufen von Daten von einer API mit fetch()
Verarbeiten von API-Antworten mit Promises oder Async/Await
DOM-Auswahl
document.getElementById(), document.querySelector(), document.querySelectorAll()
Ereignisbehandlung
Ereignis-Listener: addEventListener(), removeEventListener()
event.target, event.preventDefault(), event.stopPropagation()
Ändern von DOM-Elementen
Text, HTML, Attribute, Stile ändern
Dynamisches Hinzufügen/Entfernen von Elementen (createElement(), appendChild(), removeChild())
DOM-Durchquerung
parentNode, childNodes, nextSibling, previousSibling
versuchen...fangen...endlich: Fehler im synchronen Code behandeln
Benutzerdefinierte Fehler: Erstellen benutzerdefinierter Fehlerklassen
Fehler auslösen: Schlüsselwort throw zum manuellen Auslösen von Fehlern
String-Methoden:
charAt(), charCodeAt(), concat(), Includes(), indexOf(), lastIndexOf(), Slice(), Split(), toLowerCase(), toUpperCase(), Trim(), Replacement(), Search( ), match(), wiederholen(), startetMit(), endetMit(), padStart(), padEnd(), localeCompare(), fromCharCode().
Datumsmethoden:
Date.now(), Date.parse(), Date.UTC(), getDate(), getDay(), getFullYear(), getHours(), getMilliseconds(), getMinutes(), getMonth(), getSeconds(), getTime(), getTimezoneOffset(), setDate(), setFullYear(), setHours(), setMilliseconds(), setMinutes(), setMonth(), setSeconds(), setTime(), toDateString(), toISOString(), toLocaleDateString(), toLocaleTimeString(), toString().
Generator: Ein Generator in JavaScript ist eine spezielle Art von Funktion, mit der Sie die Ausführung anhalten und fortsetzen können.
Funktion*, yield, next(), return(), throw().
JavaScript-Proxy: Ein Proxy in JavaScript ist ein spezielles Objekt, das es Ihnen ermöglicht, Vorgänge an Objekten abzufangen und anzupassen, wie z. B. Eigenschaftszugriff, Zuweisung, Funktionsaufrufe und mehr. Es fungiert als Wrapper für ein anderes Objekt und kann grundlegende Operationen (wie get, set, deleteProperty usw.) für dieses Objekt neu definieren.
Häufig verwendete Fallen (Methoden):
get(target, prop, Receiver): Fängt den Zugriff auf Eigenschaften ab.
set(target, prop, value, Receiver): Fängt die Eigenschaftszuweisung ab.
has(target, prop): Fängt den in-Operator ab.
deleteProperty(target, prop): Fängt das Löschen von Eigenschaften ab.
apply(target, thisArg, argumentsList): Fängt Funktionsaufrufe ab.
Konstrukt(Ziel, Argumente): Fängt den neuen Operator ab.
defineProperty(target, prop, descriptor): Fängt die Eigenschaftsdefinition ab.
Ein flacher Klon eines Objekts oder Arrays erstellt eine neue Instanz, kopiert jedoch nur die Eigenschaften oder Elemente der obersten Ebene. Wenn das ursprüngliche Objekt oder Array Verweise auf andere Objekte (verschachtelte Objekte oder Arrays) enthält, werden diese inneren Objekte nicht kopiert. Stattdessen verweist der flache Klon auf dieselben Objekte.
Ein tiefer Klon erstellt eine völlig unabhängige Kopie des ursprünglichen Objekts oder Arrays. Es kopiert rekursiv alle Eigenschaften oder Elemente, einschließlich verschachtelter Objekte oder Arrays. Dies bedeutet, dass durch tiefes Klonen sichergestellt wird, dass keine Verweise auf verschachtelte Objekte zwischen dem Original und dem Klon geteilt werden.
Lose Gleichheit vergleicht zwei Werte auf Gleichheit, nachdem Typumwandlung durchgeführt wurde. Das bedeutet, dass die Werte vor dem Vergleich in einen gemeinsamen Typ konvertiert werden (sofern sie unterschiedlichen Typs sind).
Bei Verwendung von == versucht JavaScript, die Operanden vor dem Vergleich in denselben Typ zu konvertieren.
Strenge Gleichheit vergleicht zwei Werte, ohne eine Typkonvertierung durchzuführen. Es prüft sowohl den Wert als auch den Typ der Operanden.
Für === müssen die Operanden vom gleichen Typ und Wert sein, um als gleich zu gelten.
Aufruf nach Wert: Wenn ein Argument als Wert an eine Funktion übergeben wird, wird eine Kopie des tatsächlichen Werts übergeben. Alle am Argument innerhalb der Funktion vorgenommenen Änderungen wirken sich nicht auf die ursprüngliche Variable außerhalb der Funktion aus.
Wenn es passiert: Dies geschieht, wenn primitive Typen (wie Zahlen, Zeichenfolgen, boolesche Werte, Null, undefiniert und Symbole) an eine Funktion übergeben werden.
Aufruf per Referenz: Wenn ein Argument per Referenz übergeben wird, wird die Referenz (oder Speicheradresse) des tatsächlichen Objekts an die Funktion übergeben. Dies bedeutet, dass alle Änderungen, die am Argument innerhalb der Funktion vorgenommen werden, direkt das ursprüngliche Objekt außerhalb der Funktion ändern.
Wenn es passiert: Dies geschieht, wenn nicht-primitive Typen (wie Objekte, Arrays und Funktionen) an eine Funktion übergeben werden.
Hauptmerkmale eines Sets:
Einzigartige Elemente: Ein Set stellt automatisch sicher, dass jeder darin enthaltene Wert eindeutig ist. Wenn Sie versuchen, einen doppelten Wert hinzuzufügen, wird dieser ignoriert.
Geordnet: Die Elemente in einem Set sind geordnet, d. h. die Werte werden in der Reihenfolge gespeichert, in der sie hinzugefügt wurden. Allerdings erlauben Sets keine doppelten Einträge.
Iterierbar: Sets sind iterierbar, sodass Sie die Elemente in einem Set mit for...of oder Methoden wie .forEach() durchlaufen können.
Keine Indizes: Im Gegensatz zu Arrays wird auf Set-Elemente nicht über einen Index zugegriffen. Sie werden nach Einfügungsreihenfolge gespeichert, Sie können sie jedoch nicht anhand einer Nummer referenzieren.
Grundlegende Methoden eines Sets:
add(value): Fügt dem Set einen Wert hinzu. Wenn der Wert bereits vorhanden ist, führt er keine Aktion aus (keine Duplikate).
has(value): Prüft, ob das Set den angegebenen Wert enthält. Gibt wahr oder falsch zurück.
delete(value): Entfernt den angegebenen Wert aus dem Set.
clear(): Entfernt alle Elemente aus dem Set.
Größe: Gibt die Anzahl der Elemente im Set zurück.
forEach(callback): Führt eine bereitgestellte Funktion einmal für jeden Wert im Set aus.
Grundlegende Methoden einer Karte:
set(key, value): Fügt ein Element mit dem angegebenen Schlüssel und Wert in der Map hinzu oder aktualisiert es.
get(key): Ruft den mit dem angegebenen Schlüssel verknüpften Wert ab.
has(key): Prüft, ob eine Map einen Schlüssel enthält.
delete(key): Entfernt das mit dem angegebenen Schlüssel verknüpfte Element.
clear(): Entfernt alle Elemente aus der Karte.
Größe: Gibt die Anzahl der Schlüssel-Wert-Paare in der Map zurück.
forEach(callback): Führt eine bereitgestellte Funktion einmal für jedes Schlüssel-Wert-Paar in der Map aus.
keys(): Gibt ein Iteratorobjekt zurück, das alle Schlüssel in der Map enthält.
Werte(): Gibt ein Iteratorobjekt zurück, das alle Werte in der Karte enthält.
Einträge(): Gibt ein Iteratorobjekt zurück, das ein Array von [Schlüssel, Wert]-Paaren enthält.
Die Fetch-API: Die Fetch-API ermöglicht es uns, vom Browser aus asynchrone Anfragen an Webserver zu stellen. Es gibt jedes Mal, wenn eine Anfrage gestellt wird, ein Versprechen zurück, das dann weiter verwendet wird, um die Antwort der Anfrage abzurufen.
Import/Export:
Module: In JavaScript ist ein Modul eine Datei, die Code enthält, den Sie wiederverwenden möchten. Anstatt alles in einer Datei zu haben, können Sie Ihren Code in separate Dateien aufteilen und dann importieren, was Sie benötigen. Dadurch bleibt der Code sauber, organisiert und wartbar.
Importe: Auf diese Weise integrieren Sie Funktionen aus anderen Modulen in Ihre aktuelle Datei.
Exporte: So stellen Sie Variablen, Funktionen, Klassen oder Objekte aus einem Modul zur Verwendung in anderen Modulen zur Verfügung.
Reine Funktionen, Nebenwirkungen, Zustandsmutation und Ereignisausbreitung:
Rekursion:
Rekursion ist ein grundlegendes Programmierkonzept, bei dem sich eine Funktion selbst aufruft, um ein Problem zu lösen. Rekursion wird häufig verwendet, wenn ein Problem in kleinere, ähnliche Teilprobleme zerlegt werden kann. In JavaScript ist Rekursion nützlich für Aufgaben wie das Durchqueren von Bäumen, das Lösen von Rätseln und mehr.
Schlüsselkonzepte:
Basisfall: Die Bedingung, die die Rekursion stoppt. Ohne einen Basisfall kann die Rekursion zu unendlichen Funktionsaufrufen führen und einen Stapelüberlauffehler verursachen.
Rekursiver Fall: Der Teil der Rekursion, in dem sich die Funktion selbst mit einer kleineren oder einfacheren Version des Problems aufruft.
Die Apply-, Call- und Bind-Methoden:
Fenstermethoden:
alarm(), bestätigen(), prompt(), setTimeout(), setInterval(), clearTimeout(), clearInterval(), open(), close(), requestAnimationFrame().
Mausereignisse:
click, dblclick, Mousedown, Mouseup, Mousemove, Mouseover, Mouseout, MouseEnter, Mouseleave, Kontextmenü.
Tastaturereignisse:
Tastendruck, Tastendruck, Tastendruck.
Ereignisse bilden:
Senden, ändern, fokussieren, verwischen, eingeben, zurücksetzen, auswählen, Tastendruck, Tastendruck, Tastendruck.
Debugging:
Cross-Origin Resource Sharing (CORS):
Web Worker: Ein Mechanismus zum Ausführen von Skripten in Hintergrundthreads, der es JavaScript ermöglicht, rechenintensive Aufgaben auszuführen, ohne den Hauptthread zu blockieren.
Service Worker: Ein Skript, das im Hintergrund Ihres Browsers ausgeführt wird und Funktionen wie Push-Benachrichtigungen, Hintergrundsynchronisierung und Caching für Offline-Funktionalität ermöglicht.
Lazy Loading oder Infinite Scrolling):
Lazy Loading und Infinite Scrolling sind zwei Techniken, die häufig zur Verbesserung der Leistung und Benutzererfahrung in Webanwendungen verwendet werden, insbesondere beim Umgang mit großen Daten- oder Medienmengen (wie Bildern, Listen oder Artikeln).
Lazy Loading ist ein Designmuster in der Webentwicklung, bei dem Ressourcen (wie Bilder, Skripte, Videos oder sogar Inhalte) nur dann geladen werden, wenn sie benötigt werden.
Das Hauptziel von Lazy Loading besteht darin, die anfängliche Ladezeit einer Webseite zu verbessern, indem die Anzahl der anfänglich geladenen Ressourcen reduziert wird.
Infinite Scrolling ist eine Technik, die automatisch mehr Inhalte lädt, wenn der Benutzer auf der Seite nach unten scrollt, normalerweise ohne dass eine Paginierung erforderlich ist. Dies wird häufig auf Social-Media-Plattformen, Nachrichtenseiten und allen Webanwendungen verwendet, die große Datensätze anzeigen müssen (z. B. Instagram, Twitter, Facebook).
76: Progressive Web Apps (PWAs): Erstellen von Webanwendungen, die offline funktionieren, Push-Benachrichtigungen bereitstellen und eine native Leistung bieten (durch Servicemitarbeiter und andere Browser-APIs).
78.Strikter Modus: Der Strikte Modus ist eine Funktion in JavaScript, die sicherstellt, dass Sie Fehler und problematische Funktionen vermeiden.
Cross-Site Scripting (XSS)
Cross-Site Request Forgery (CSRF)
Inhaltssicherheitsrichtlinie (CSP)
CORS (Cross-Origin Resource Sharing)
JWT (JSON Web Tokens)
Die TDZ tritt für Variablen auf, die mit let und const deklariert wurden, aber nicht für var, da var-Deklarationen mit undefiniert angehoben und initialisiert werden.
Das ist es, Leute.
Das Erlernen von JavaScript oder einer anderen Programmiersprache kann zunächst überwältigend sein. Wenn Sie ein Thema nicht auf Anhieb verstehen, ist das völlig in Ordnung! Niemand wird über Nacht zum Experten. Der Schlüssel ist Beständigkeit, Übung und Beharrlichkeit.
Denken Sie daran, dass jeder Entwickler mit den Grundlagen begonnen hat. Nehmen Sie sich die Zeit, jedes Thema gründlich zu verstehen, insbesondere wenn Sie Anfänger sind. Überstürzen Sie den Prozess nicht und lassen Sie sich nicht von der Vielzahl der zu beherrschenden Konzepte entmutigen. Übe weiter und nach und nach wird es Klick machen.
Bleiben Sie geduldig, bleiben Sie neugierig und, was am wichtigsten ist, programmieren Sie weiter!
Vielen Dank, dass Sie sich die Zeit genommen haben, meinen Blog zu lesen! Ich hoffe, Sie fanden es hilfreich und informativ. Wenn ich wichtige Themen oder Konzepte verpasst habe, entschuldige ich mich aufrichtig. Hinterlassen Sie gerne einen Kommentar oder kontaktieren Sie uns, wenn Sie Fragen oder Anregungen haben. Wir freuen uns immer über Ihr Feedback!
Und vergessen Sie nicht zu klatschen, wenn Sie das hilfreich fanden! ?
Das obige ist der detaillierte Inhalt vonVollständiges Javascript – von Grundkenntnissen bis zu Fortgeschrittenen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!