Für eine bessere Lesbarkeit und Wartbarkeit von Quellcode ist es ratsam, sich beim Programmieren an einheitliche Konventionen zu halten. Dazu zählen u. a.:
Es ist ratsam immer die selben Namenskonventionen zu verwenden. Das erhöht die Lesbarkeit und Wartbarkeit von Quellcode. Es gibt folgende bekannte Namenskonventionen:
Folgendes ist bei der Vergabe von Namen außerdem noch zu beachten:
Folgende Regeln sollten für die Lesbarkeit von Quellcode verwendet werden:
Beim Einbinden von externen Skripten sollte immer die einfache Variante, ohne das „type“-Attribut verwendet werden.
Da einige Webserver zwischen Groß- und Kleinschreibung unterscheiden und andere nicht, sollten prinzipiell nur kleine Buchstaben für Dateinamen verwendet werden, um mögliche Fehler zu vermeiden:
Die Verwendung von globalen Variablen, Objekten und Funktionen sollte vermieden werden. In umfangreichen Programmen und wenn externer JavaScript-Code eingebunden wird, ist kaum zu überblicken, welche Variablennamen bereits verwendet wurden, was dazu führen kann, dass Variablennamen mehrfach verwendet und so Variablen überschrieben werden:
HTML-Datei:
Ergebnis:
x1:
y1:
myCalc11():
x1:
myCalc12():
x1:
Variablen sollten immer deklariert werden. Dadurch wird verhindert, dass Variablen ungewollt automatisch global deklariert werden. Außerdem ist es ratsam alle Variablen am Anfang eines Programms oder Code-Blocks zu deklarieren. Das verbessert die Übersichtlichkeit und vermindert das Risiko, dass Variablennamen doppelt verwendet werden:
HTML-Datei:
Ergebnis:
x2, y2, z2:
myAdd2(x2, y2):
x2, y2, z2:
mySub2(z2, y2):
x2, y2, z2:
Variablen sollten auch immer initialisiert werden. Dadurch wird der gewollte Typ einer Variablen ersichtlich und vermieden, dass Variablen auf „undefined“ gesetzt werden und ggf. zu ungewollten Ergebnissen führen:
HTML-Datei:
Ergebnis:
x3, y3, z3:
x3 + y3:
z3 - x3:
Um ungewolltes Verhalten eines Programms zu vermeiden, sollten immer auch Standardwerte und -fälle definiert werden. So sollten Funktionsparameter daraufhin geprüft werden, ob ihnen ein Wert zugewiesen wurde und bei „if“-Anweisungen auch immer ein „else“-Zweig und bei „switch“-Anweisungen immer ein „default“-Fall definiert werden:
HTML-Datei:
Ergebnis:
myAdd4(x4, y4):
myAdd4(x4):
myCheck4(myAdd4()):
Für Zahlen, Zeichenketten und Boolesche Werte sollten einfache Variablen und keine Objekte verwendet werden. Die Verwendung von einfachen Variablen verbessert die Performance und ermöglicht Typen-Vergleiche:
HTML-Datei:
Ergebnis:
(x5 === y5) =
(a5 === b5) =
Ein häufiger Fehler ist die Verwendung eines Zuweisungsoperators (einfaches Gleichheits-zeichen) innerhalb eines Vergleichs, bei dem ein doppeltes Gleichheitszeichen erforderlich ist. Im folgenden Beispiel führt die fehlerhafte zweite „if...else“-Anweisung nicht nur dazu, dass der falsche Zweig genommen wird, sondern auch, dass ungewollt die Variable „y“ verändert wird:
HTML-Datei:
Ergebnis:
if (x6 == 33) =>
if (y6 = 44) =>
Ein weiterer beliebter Fehler ist die Verwendung eines falschen Typs innerhalb einer „switch“-Anweisung. Im folgenden Beispiel ist die zweite „switch“-Anweisung falsch, da der Typ der Variablen nicht mit dem Typ für den „case“-Zweig übereinstimmt:
HTML-Datei:
Ergebnis:
switch(x7) { case 11: ... =>
switch(y7) { case 11: ... =>
In JavaScript sind Zeilenumbrüche innerhalb von Zeichenketten, ohne dass dies kenntlich gemacht wird, nicht erlaubt. Soll eine Zeichenkette umgebrochen werden, muss dazu am Zeilenende ein „Backslash“ („\“) verwendet werden:
HTML-Datei:
Ergebnis:
str81 =
str82 =
Anweisungen können nur dann auf mehrere Zeilen umgebrochen werden, wenn die einzelnen Zeilen für sich keine vollständige Anweisung darstellen. Ist eine Anweisung vollständig, fügt JavaScript automatisch am Ende der Zeile ein Semikolon ein. Somit kann z. B. eine „return“-Anweisung nicht umgebrochen werden, da das Schlüsselwort „return“ für sich schon eine vollständige Anweisung ist:
HTML-Datei:
Ergebnis:
x9 =
myFunc9() =
Auch wenn es nicht erforderlich ist, erlaubt JavaScript das Setzen eines Kommas nach dem letzten Element eines Objekts oder eines Arrays. Das sollte aber vermieden werden, da beim Übertragen von Daten mit JSON dies zu einem Fehler führt:
HTML-Datei:
Ergebnis:
myObj10.Nachname =
myJObj101.Nachname =
myJObj102.Nachname =
Eine Möglichkeit die Performance (Geschwindigkeit) von Skripten zu verbessern, ist die Reduzierung von Anweisungen innerhalb von Schleifen. Da bei Schleifen selbst die Anweisungen im Schleifenkopf bei jedem Durchlauf erneut ausgeführt werden, ist es ratsam so viele von diesen Anweisungen wie möglich schon vor der eigentlichen Schleife auszuführen:
HTML-Datei:
Ergebnis:
Schlechte Schleife = Millisekunden
Optimierte Schleife = Millisekunden
Ein weiterer Performancegewinn lässt sich erzielen, indem der Zugriff auf DOM-Elemente jeweils immer nur einmal durchgeführt wird. Der Verweis auf das entsprechende DOM-Element wird dazu in einer Variablen vorgehalten, über die dann das DOM-Element ausgelesen oder manipuliert werden kann:
HTML-Datei:
Ergebnis:
Schlechter DOM-Zugriff = Millisekunden
Optimierter DOM-Zugriff = Millisekunden
Die Performance lässt sich außerdem verbessern, indem auf unnötige Variablen verzichtet wird. Z. B. sollten Ergebnisse nicht erst in einer Variablen zwischengespeichert werden, bevor sie ausgegeben werden:
HTML-Datei:
Ergebnis:
Schlechtes Variablen-Handling = Millisekunden
Optimiertes Variablen-Handling = Millisekunden
Damit eine Webseite möglichst schnell geladen und dargestellt wird, sollte der JavaScript-Code erst nach dem Aufbau der Seite (Parsen) geladen werden. Das kann z. B. dadruch realisiert werden, indem der interne JavaScript-Code an das Ende der HTML-Seite gesetzt wird. Bei externem Code kann das Attribut „defer“ mit dem Wert „true“ verwendet werden, wodurch das Script erst nach dem Aufbau der Seite geladen wird, egal wo das „script“-Tag im HTML-Dokument untergebracht ist:
In allen Programmiersprachen gibt es reservierte Wörter, die nicht als Namen für eigene Variablen, Objekte und Funktionen verwendet werden dürfen.
In JavaScript dürfen reservierte Wörter aus den folgenden Bereichen nicht verwendet werden:
Namen von vordefinierten HTML-Elementen, -Attributen und -Events sowie Windows-Objekten und -Eigenschaften SOLLTEN ebenfalls vermieden werden:
Hinweis: Eine Liste der reservierten Wörter in JavaScript gibt es u. a. auf der Seite „JavaScript Reserved Words“ von „w3schools.com“!