JavaScript (JS) ist eine allgegenwärtige, flexible und weit verbreitete Programmiersprache. Allerdings ist sie auch anfällig für Fehler und Bugs, die bei den meisten Entwicklern für Stirnrunzeln und Entsetzen sorgen
JS wird in großem Umfang für die Benutzerinteraktivität auf der Client-Seite der meisten Webanwendungen eingesetzt. Ohne JavaScript wären die Dinge im Web vielleicht leblos und unanregend. Dennoch führen die Höhen und Tiefen der Sprache dazu, dass Entwickler manchmal eine Hassliebe zu ihr entwickeln
JavaScript-Fehler führen dazu, dass Anwendungen unerwartete Ergebnisse liefern und die Benutzerfreundlichkeit beeinträchtigen. In einer Studie der University of British Columbia (UBC) wurde versucht, die Ursachen und Auswirkungen von JavaScript-Fehlern und -Bugs herauszufinden. Die Ergebnisse der Studie deckten einige häufige Muster auf, die die Leistung von JS-Programmen beeinträchtigen
Hier ist ein Tortendiagramm, das zeigt, was die Forscher herausgefunden haben
In diesem Blog-Beitrag zeigen wir Ihnen einige der in der Studie hervorgehobenen häufigen Ursachen von JavaScript-Fehlern (sowie andere, denen wir täglich begegnen) und wie Sie Ihre Anwendungen weniger fehleranfällig machen können
DOM-bezogen
Das Document Object Model (DOM) spielt eine entscheidende Rolle für die Interaktivität von Websites. Die DOM-Schnittstelle ermöglicht die Manipulation von Inhalt, Stil und Struktur einer Webseite. Die Interaktivität von einfachen HTML-Webseiten – oder die Manipulation des DOM – ist der eigentliche Grund, warum die Programmiersprache JavaScript veröffentlicht wurde
Selbst mit der Einführung von Backend-JavaScript-Technologien wie Node.js macht die Arbeit mit dem DOM immer noch einen großen Teil der Aufgaben der Sprache aus. Daher ist das DOM ein wichtiger Ansatzpunkt für die Einführung von Bugs und Fehlern in JavaScript-Anwendungen
Es überrascht nicht, dass die Studie zu JavaScript-Fehlerberichten herausfand, dass DOM-bezogene Probleme für die meisten Fehler verantwortlich sind (68 %)
Einige JavaScript-Programmierer machen zum Beispiel häufig den Fehler, ein DOM-Element zu referenzieren, bevor es geladen ist, was zu Codefehlern führt
<!DOCTYPE html>
<html>
<body>
<script>
document.getElementById("container").innerHTML = "Allgemeine JS-Bugs und Fehler";
</script>
<div id="container"></div>
</body>
</html>
Wenn der obige Code im Chrome-Browser ausgeführt wird, wird ein Fehler ausgegeben, der in der Entwicklerkonsole angezeigt wird
Der Fehler wird ausgelöst, weil JavaScript-Code normalerweise in der Reihenfolge ausgeführt wird, in der er in einem Dokument erscheint. Daher kennt der Browser das referenzierte <div>-Element
nicht, wenn der Code ausgeführt wird
Um ein solches Problem zu lösen, können Sie verschiedene Ansätze verwenden. Die einfachste Methode besteht darin, das <div id="container"></div>
vor den Beginn des Skript-Tags zu setzen. Sie können auch eine JavaScript-Bibliothek wie jQuery verwenden, um sicherzustellen, dass das DOM zuerst geladen wird, bevor auf es zugegriffen werden kann
<!DOCTYPE html>
<html>
<body>
<div id="container"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
document.getElementById("container").innerHTML = "Allgemeine JS-Bugs und Fehler";
</script>
</body>
</html>
Syntax-basiert
Syntaxfehler treten auf, wenn der JavaScript-Interpreter einen syntaktisch falschen Code nicht ausführen kann. Wenn der Interpreter bei der Erstellung einer Anwendung Token entdeckt, die nicht mit der Standardsyntax der JavaScript-Programmiersprache übereinstimmen, wird er einen Fehler ausgeben. Laut der JavaScript Bug Report Studie sind solche Fehler für 12% aller Fehler in der Sprache verantwortlich
Grammatikalische Fehler, wie fehlende Klammern oder nicht übereinstimmende Klammern, sind die Hauptursache für Syntaxfehler in JavaScript
Wenn Sie beispielsweise bedingte Anweisungen verwenden müssen, um mehrere Bedingungen zu erfüllen, kann es vorkommen, dass Sie die Klammern nicht wie erforderlich setzen, was zu Syntaxfehlern führt
Schauen wir uns das folgende Beispiel an
if((x > y) && (y < 77) {
//mehr Code hier
}
Ja, die letzte Klammer der bedingten Anweisung fehlt. Ist Ihnen der Fehler im obigen Code aufgefallen?
Lassen Sie ihn uns korrigieren
if ((x > y) && (y < 77)) {
//weiterer Code hier
}
Um solche Syntaxfehler zu vermeiden, sollten Sie Zeit damit verbringen, die grammatikalischen Regeln der Programmiersprache JavaScript zu lernen. Mit ausgiebiger Programmierpraxis können Sie die grammatikalischen Fehler leicht erkennen und vermeiden, sie mit Ihrer entwickelten Anwendung auszuliefern
Unsachgemäße Verwendung von undefinierten/null Schlüsselwörtern
Einige JavaScript-Entwickler wissen nicht, wie sie die Schlüsselwörter undefined und null richtig verwenden. Laut der Studie ist die unsachgemäße Verwendung dieser Schlüsselwörter für 5 % aller JavaScript-Fehler verantwortlich
Das Schlüsselwort null ist ein Zuweisungswert, der normalerweise einer Variablen zugewiesen wird, um einen nicht existierenden Wert zu bezeichnen. Überraschenderweise ist null auch ein JavaScript-Objekt
Hier ist ein Beispiel
var codeJS = null;
console.log(codeJS);
//Ausgabe ist null
console.log(typeof codeJS);
//Ausgabe ist Objekt
Andererseits bedeutet undefiniert, dass einer Variablen oder einer anderen Eigenschaft, die bereits deklariert wurde, noch kein Wert zugewiesen wurde. Es kann auch bedeuten, dass nichts deklariert wurde. undefined ist ein Typ für sich selbst
Hier ist ein Beispiel
var codeJS;
console.log(codeJS);
//Ausgabe ist undefiniert
console.log(typeof codeJS);
//Ausgabe ist undefiniert
Interessanterweise betrachtet der Gleichheitsoperator und der Identitätsoperator die Schlüsselwörter null und undefined nicht als gleich
console.log(null==undefined);
//Ausgabe ist wahr
console.log(null===undefined);
//Ausgabe ist falsch
Die Kenntnis der korrekten Verwendung der Schlüsselwörter null und undefined kann Ihnen also dabei helfen, Fehler in Ihren JavaScript-Programmen zu vermeiden
Undefinierte Methoden
Eine weitere häufige Ursache für Bugs in JavaScript ist der Aufruf einer Methode, ohne dass diese zuvor definiert wurde. Die UBC-Forscher fanden heraus, dass dieser Fehler zu 4% aller JavaScript-Fehler führt
Hier ist ein Beispiel
var coder = {
name: "Peter",
age: 27,
speak() {
console.log(this.name);
}
};
coder.speakNow()
Hier ist der Fehler in der Chrome-Entwicklerkonsole zu sehen
Der obige Fehler tritt auf, weil die aufgerufene Funktion speakNow() nicht im JavaScript-Code definiert wurde
Unsachgemäße Verwendung der return-Anweisung
In JavaScript wird die return-Anweisung verwendet, um die Ausführung einer Funktion zu beenden, damit ihr Wert ausgegeben werden kann. Bei fehlerhafter Verwendung kann die return-Anweisung die optimale Leistung von Anwendungen beeinträchtigen. Laut der Studie führt die falsche Verwendung der return-Anweisung zu 2 % aller Fehler in JavaScript-Anwendungen
Einige JavaScript-Programmierer machen zum Beispiel den Fehler, die return-Anweisung falsch zu brechen
Während Sie eine JavaScript-Anweisung in zwei Zeilen unterbrechen können und trotzdem die gewünschte Ausgabe erhalten, ist die Unterbrechung der return-Anweisung eine Einladung zur Katastrophe in Ihrer Anwendung
Hier ist ein Beispiel
function number(n) {
var add = 5;
return;
n add;
}
console.log(number(10))
Wenn der obige Code ausgeführt wird, wird in der Chrome-Entwicklerkonsole ein undefinierter Fehler angezeigt
Sie sollten daher davon absehen, Return-Anweisungen in Ihrem JavaScript-Code zu brechen
Schlussfolgerung
Die clientseitige JavaScript-Programmiersprache verfügt über ausgezeichnete und umfangreiche Möglichkeiten, um die Funktionalitäten moderner Webanwendungen zu unterstützen. Wenn Sie jedoch die Eigenheiten dieser Sprache nicht verstehen, kann die Leistung Ihrer Anwendungen beeinträchtigt werden
Außerdem benötigen JavaScript-Entwickler vielseitige Tools, um die Leistung ihrer Anwendungen zu überprüfen und Bugs und Fehler schnell zu erkennen
Mit einer umfassenden Suite von Testtools können Sie daher die Anomalien, die die Leistung Ihrer Website beeinträchtigen, sicher identifizieren. Das ist es, was Sie brauchen, um die Leistung Ihrer Website zu verbessern und ein optimales Benutzererlebnis zu erreichen
Viel Spaß bei der fehlerfreien JavaScript-Programmierung!
Artikel geschrieben von Alfrick Opidi
-
Das Redaktionsteam von Geekflare besteht aus einer Gruppe erfahrener Autoren und Redakteure, die sich der Bereitstellung hochwertiger Inhalte für unsere Leser verschrieben haben. Wir sind bestrebt, umsetzbare Inhalte zu liefern, die Einzelpersonen und Unternehmen helfen, zu wachsen.