Verwenden von `var` oder nicht
Sie sollten jede Variable mit dem einfügen var
Anweisung , da sie sonst in den globalen Bereich gelangt.
Es ist erwähnenswert, dass im strengen Modus ( "use strict";
) nicht deklarierte Variablenzuweisungen ausgelöst werdenReferenceError
.
Derzeit hat JavaScript keinen Blockbereich. Die Crockford-Schule lehrt Sie, var-Anweisungen am Anfang des Funktionskörpers zu platzieren , während Dojos Style Guide dies liest alle Variablen im kleinstmöglichen Umfang deklariert werden sollten . (Die let
Aussage und Definition in JavaScript 1.7 eingeführte ist nicht Teil des ECMAScript-Standards.)
Es wird empfohlen, die Eigenschaften regelmäßig verwendeter Objekte an lokale Variablen zu binden, da dies schneller ist als das Nachschlagen der gesamten Bereichskette. (Sehen Optimieren von JavaScript für extreme Leistung und geringen Speicherverbrauch .)
Definieren von Dingen in der Datei oder in einem `(function () {...}) ()`
Wenn Sie Ihre Objekte nicht außerhalb Ihres Codes erreichen müssen, können Sie Ihren gesamten Code in einen Funktionsausdruck einschließen - dies wird als Modulmuster bezeichnet. Es bietet Leistungsvorteile und ermöglicht es, Ihren Code auf hohem Niveau zu minimieren und zu verdecken. Sie können auch sicherstellen, dass der globale Namespace nicht verschmutzt wird. Durch das Umschließen von Funktionen in JavaScript können Sie auch aspektorientiertes Verhalten hinzufügen. Ben Cherry hat einen ausführlichen Artikel über das Modulmuster .
Verwenden von "dies" oder nicht
Wenn Sie die pseudoklassische Vererbung in JavaScript verwenden, können Sie die Verwendung kaum vermeiden this
. Es ist Geschmackssache, welches Vererbungsmuster Sie verwenden. In anderen Fällen lesen Sie den Artikel von Peter Michaux über JavaScript-Widgets ohne "dies" .
Verwenden von `function myname ()` oder` myname = function (); `
function myname()
ist eine Funktionsdeklaration und myname = function();
ein der Variablen zugewiesener Funktionsausdruck myname
. Das letztere Formular gibt an, dass Funktionen erstklassige Objekte sind und Sie mit ihnen alles tun können, wie mit einer Variablen. Der einzige Unterschied zwischen ihnen besteht darin, dass alle Funktionsdeklarationen an die Spitze des Bereichs gehoben werden, was in bestimmten Fällen von Bedeutung sein kann. Ansonsten sind sie gleich. function foo()
ist eine Kurzform. Weitere Details zum Heben finden Sie im Artikel JavaScript Scoping and Hoisting .
Methoden im Objektkörper definieren oder "Prototyp" verwenden
Es liegt an dir. JavaScript verfügt über vier Objekterstellungsmuster: pseudoklassisch, prototypisch, funktional und Teile ( Crockford, 2008 ). Jeder hat seine Vor- und Nachteile, sehen Sie Crockford in seinen Videogesprächen oder holen Sie sich sein Buch The Good Parts, wie Anon bereits vorgeschlagen hat .
Frameworks
Ich schlage vor, Sie greifen auf einige JavaScript-Frameworks zurück, studieren deren Konventionen und Stil und finden die Praktiken und Muster, die am besten zu Ihnen passen. Zum Beispiel das Dojo Toolkit bietet beispielsweise ein robustes Framework zum Schreiben von objektorientiertem JavaScript-Code, der sogar Mehrfachvererbung unterstützt.
Muster
Schließlich gibt es einen Blog, der sich mit gängigen JavaScript-Mustern und Anti-Mustern befasst . Lesen Sie auch die Frage Gibt es Codierungsstandards für JavaScript? im Stapelüberlauf.