1. Globaler Namespace -Verschmutzung
Wickeln Sie den Code immer in einen sofortigen Funktionsausdruck, um ein unabhängiges Modul zu bilden.
Nicht empfohlen
var x = 10, y = 100; console.log (window.x + '' + window.y);
empfehlen
; (Funktion (Fenster) {'strikt verwenden'; var x = 10, y = 100; console.log (Fenster.x + '' + Fenster.y);} (Fenster));2. Führen Sie die Funktion sofort aus
In der sofortigen Ausführungsfunktion kann die Funktionsbehörde, die die Funktion sofort ausführt, in Form lokaler Variablen aufgerufen werden, was die Programmleistung in gewissem Maße verbessert.
Und Sie sollten den formalen Parametern der Funktion und der letzten Position sofort undefined hinzufügen, da undefined in ES3 gelesen und geschrieben werden kann. Wenn der Wert von undefined in der globalen Position geändert wird, wird Ihr Code möglicherweise nicht überfällige Ergebnisse erzielt.
Darüber hinaus wird empfohlen, Semikolons zu Beginn und am Ende der Funktion sofort hinzuzufügen, um zu vermeiden, dass wir unseren eigenen Code aufgrund des unregelmäßigen Code anderer Personen während der Zusammenführung beeinflussen.
Nicht empfohlen
(function () {'strikt verwenden'; var x = 10, y = 100, c, elem = $ ('body'); console.log (window.x + '' + window.y);empfehlen
; (Funktion ($, Fenster, Dokument, undefiniert) {'Strict'; var x = 10, y = 100, c, elem = $ ('body'); console.log (window.x + '' + window.y);3.. Strenge Modus
Der strenge Modus von ECMAScript 5 kann im gesamten Skript oder innerhalb einer einzelnen Methode aktiviert werden. Es entspricht verschiedenen JavaScript -Kontexten und führt strengere Fehlerprüfungen durch. Der strenge Modus stellt auch sicher, dass der JavaScript -Code robuster ist und schneller ausgeführt wird.
Der strenge Modus verhindert die Verwendung reservierter Keywords, die wahrscheinlich in Zukunft eingeführt werden.
Sie sollten den strengen Modus in Ihrem Skript aktivieren und vorzugsweise in einer unmittelbaren Ausführungsfunktion anwenden. Vermeiden Sie es, es in der ersten Zeile Ihres Skripts zu verwenden, die dazu führt, dass alle Skripte den strengen Modus starten, was zu Problemen mit einer Bibliothek von Drittanbietern führt.
Nicht empfohlen
'strict'; (function () {} ());empfehlen
(function () {'strikt verwenden';} ());Iv. Variable Deklaration
Für alle variablen Deklarationen sollten wir var angeben. Wenn var nicht angegeben ist, wird im strengen Modus ein Fehler angegeben, und Variablen im selben Bereich sollten so weit wie möglich mit einer var deklariert werden, und mehrere Variablen sollten durch "," getrennt werden.
Nicht empfohlen
Funktion myfun () {x = 5; y = 10;}Nicht vollständig empfohlen
Funktion myfun () {var x = 5; var y = 10;}empfehlen
Funktion myfun () {var x = 5, y = 10;}5. Vergleichendes Urteil unter Verwendung des Typurteils
Es verwendet den exakten Vergleich Operator ===, um die Probleme zu vermeiden, die durch JavaScripts Besetzung während des Urteilsverfahrens verursacht werden.
Wenn Sie den Operator === verwenden, müssen die beiden Parteien zum Vergleich vom gleichen Typ sein, um gültig zu sein.
Nicht empfohlen
(Funktion (w) {'Strict'; w.console.log (x == 'x'); // true} (window.console.log));empfehlen
(Funktion (w) {'Strict'; };6. Logische Operationen bei variabler Zuordnung
Logische Operatoren || und && können auch verwendet werden, um boolesche Werte zurückzugeben. Wenn es sich bei dem Operationsobjekt um ein nicht-boolanisches Objekt handelt, wird jeder Ausdruck von links nach rechts beurteilt. Basierend auf dieser Operation gibt es immer einen Ausdruck, der am Ende zurückgegeben wird. Dies kann verwendet werden, um Ihren Code bei der Zuweisung von Variablen zu vereinfachen.
Nicht empfohlen
if (! x) {if (! y) {x = 1; } else {x = y; }}empfehlen
x = x || y || 1;
7. Semikolon
Verwenden Sie immer Semikolone, da implizite Code -Verschachteln nicht nachweisbare Probleme verursachen kann. Natürlich müssen wir diese Probleme grundlegend beseitigen [1].
Die folgenden Beispiele zeigen den Schaden, ein Semikolon zu fehlen:
// 1.myclass.prototype.mymethod = function () {return 42;} // gibt es hier kein Semicolon (function () {}) (); //2.var x = {'i': 1, 'j': 2} // Es gibt hier kein Semikolon // Ich weiß, dass Sie vielleicht nie einen solchen Code schreiben, aber ich werde ein Beispiel geben [ffversion, dh ieversion] [isie] (); // 3.var things_to_eat = [Äpfel, Austern, sprayonchese] // Es gibt hier kein Semikolon-1 == resultofoperation () || sterben();Fehlerergebnisse
1. JavaScript -Fehler - Die Funktion, die 42 zurückgibt, wird vom Parameter in der zweiten Funktion zuerst aufgerufen, und dann wird auch die Nummer 42 "aufgerufen", was zu einem Fehler führt.
2. 80 Mal Sie erhalten die Fehlermeldung "Keine solche Eigenschaft in undefinierter Eigenschaft", da der Anruf in der realen Umgebung wie folgt aussieht: xffversion, dh iEversion ().
3. wird immer aufgerufen. Da das Ergebnis von minus 1 im Array NAN ist, entspricht es nichts (unabhängig davon, ob die Ergebnisse der NAN NAN zurückgeben oder nicht). Das Endergebnis ist also, dass der erhaltene Wert nach der () ausgeführt wird.
8. Funktionserklärungen in Anweisungsblöcken
Deklarieren Sie niemals Funktionen innerhalb von Anweisungsblöcken, was im strengen Modus von ECMAScript 5 illegal ist. Funktionserklärungen sollten auf der obersten Ebene des Geltungsbereichs liegen. Innerhalb des Anweisungsblocks kann die Funktionserklärung jedoch in einen Funktionsausdruck umgewandelt und einer Variablen zugeordnet werden.
Nicht empfohlen
if (x) {function foo () {}}empfehlen
if (x) {var foo = function () {};}9. Verwenden Sie keine Eval -Funktion
eval() verwirrt nicht nur den Kontext, sondern auch gefährlich. Es wird immer eine andere Lösung geben, um Ihren Code zu eval , der besser, klarer und sicherer ist.
10. Array- und Objektliterale
1. Verwenden Sie Array- und Objektliterale anstelle von Array und Objektkonstruktor. Array -Konstruktoren können leicht Fehler bei den Parametern machen.
Nicht empfohlen
// Arraylänge 3var A1 = Neues Array (x1, x2, x3); // Arraylänge 2var A2 = Neues Array (x1, x2); // Wenn x1 eine natürliche Zahl ist, ist seine Länge x1 //, wenn x1 keine natürliche Zahl ist, seine Länge ist 1Var A3 = New Array (x1); var a4 = New Array ().
Aus diesem Grund besteht eine hohe Möglichkeit, dass das Array von zwei auf eins von zwei auf eins übergeht. Um solche seltsamen Situationen zu vermeiden, verwenden Sie immer lesbare Array -Literale.
empfehlen
var a = [x1, x2, x3]; var a2 = [x1, x2]; var a3 = [x1]; var a4 = [];
2. Der Objektkonstruktor hat keine ähnlichen Probleme, aber für Lesbarkeit und Gleichmäßigkeit sollten wir Objektliterale verwenden.
Nicht empfohlen
var o = new Object (); var o2 = neues Objekt (); o2.a = 0; o2.b = 1; o2.c = 2; o2 ['Strange Key'] = 3;
empfehlen
var o = {}; var o2 = {a: 0, b: 1, c: 2, 'Strange Key': 3};11. Urteilsvermögen von drei Variablen (schnelle Methode für if)
Verwenden Sie den ternären Operator, um Anweisungen zuzuweisen oder zurückzugeben. Verwendung in relativ einfachen Situationen und vermeiden Sie die Verwendung in komplexen Situationen. Niemand möchte 10 Zeilen ternärer Operatoren verwenden, um sich mit ihren Gedanken zu wackeln.
Nicht empfohlen
if (x === 10) {return 'gültig';} else {return 'ungültig';}empfehlen
Rückgabe x === 10? 'gültig': 'ungültig';
12. Für Schleife
Während der Verwendung für die Schleife wird die Länge des Arrays von einer Variablen empfangen, die der Verbesserung der Codeausführungseffizienz förderlich ist. Stattdessen muss die Länge des Arrays jedes Mal neu berechnet werden, wenn die Schleife verschwunden ist.
Nicht empfohlen
für (var i = 0; i <arr.length, i ++) {}empfehlen
für (var i = 0, len = arr.length; i <len, i ++) {}13. Wiederholte DOM -Operationen
Wiederholte DOM -Operationen müssen eine Variable zum Empfangen verwenden, anstatt den DOM -Baum häufig zu betreiben, was einen schlechten Einfluss auf die Leistung, den ordentlichen Code und die einfache Wartung hat.
Nicht empfohlen
$ ('. mydiv'). find ('. span1'). text ('1'); $ ('. mydiv'). find ('. span2'). text ('2');empfehlen
var mydiv = $ ('. mydiv'); mydiv.find ('. span1'). text ('1'); mydiv.find ('. span2'). text ('2'); mydiv.find ('. span3'). text ('3'); mydiv.find ('. span4'). Wenn jquery .end() verfügbar ist, sollte verwendet .end() bevorzugt werden.
empfehlen
$ ('. mydiv'). find ('. span1'). text ('1') .end (). find ('. span2'). text ('2'); .end (). find ('. span3'). text ('3'); .end (). find ('. span4'). text ('4');14. Kommentarspezifikationen
Bei der Beschreibung von Kommentaren wird ein formatierter und einheitlicher Kommentarstil empfohlen. Versuchen Sie, die Ideen beim Schreiben von Kommentaren zu beschreiben und nicht das, was der Code tut.
Nicht empfohlen
// Bestellfunktion GetOrderById (id) {var order; // ... Rückgabeauftrag;}Methodenanmerkungen sollten einheitlich mit Annotationen auf Blockebene verwendet werden
empfehlen
/** * Bestelldetaillierte Daten basierend auf der Bestell -ID * @param {[number]} id [order id] * @return {[order]} [Bestelldetails] */Funktion getOrderById (id) {var order; // ... Rückgabeauftrag;}Zusammenfassen
Die Zusammenfassung der allgemeinen Code -Schreibspezifikationen von JavaScript ist im Grunde genommen vorbei. Dieser Artikel ist immer noch sehr umfassend und hat einen gewissen Referenzwert für alle, die JavaScript verwenden oder lernen können. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.