Używanie `var` lub nie
Powinieneś wprowadzić dowolną zmienną z var
instrukcją, w przeciwnym razie dotrze ona do zasięgu globalnego.
Warto wspomnieć, że w trybie ścisłym ( "use strict";
) zgłasza się niezadeklarowane przypisania zmiennychReferenceError
.
Obecnie JavaScript nie ma zasięgu blokowego. Szkoła Crockford uczy, jak umieszczać instrukcje var na początku treści funkcji , a Przewodnik po stylach Dojo mówi, że wszystkie zmienne powinny być deklarowane w możliwie najmniejszym zakresie . ( let
Instrukcja i definicja wprowadzona w JavaScript 1.7 nie jest częścią standardu ECMAScript).
Dobrą praktyką jest wiązanie właściwości regularnie używanych obiektów ze zmiennymi lokalnymi, ponieważ jest to szybsze niż przeglądanie całego łańcucha zasięgu. (Zobacz Optymalizacja JavaScript pod kątem ekstremalnej wydajności i niskiego zużycia pamięci ).
Definiowanie elementów w pliku lub w `(function () {...}) ()`
Jeśli nie musisz docierać do obiektów poza kodem, możesz owinąć cały kod wyrażeniem funkcyjnym - nazywa się to wzorcem modułu. Ma zalety wydajnościowe, a także pozwala na minimalizację i zaciemnienie kodu na wysokim poziomie. Możesz także upewnić się, że nie zanieczyści globalnej przestrzeni nazw. Funkcje zawijania w JavaScript pozwalają również dodawać zachowania zorientowane na aspekt. Ben Cherry ma szczegółowy artykuł na temat wzoru modułu .
Używanie „tego” lub nie
Jeśli używasz pseudoklasycznego dziedziczenia w JavaScript, nie możesz go uniknąć this
. Wybór wzoru dziedziczenia zależy od gustu. W innych przypadkach zapoznaj się z artykułem Petera Michaux na temat widżetów JavaScript Bez „tego” .
Używanie `function myname ()` lub `myname = function ();`
function myname()
jest deklaracją funkcji i myname = function();
jest wyrażeniem funkcji przypisanym do zmiennej myname
. Ta ostatnia forma wskazuje, że funkcje są pierwszorzędnymi obiektami i można z nimi zrobić wszystko, podobnie jak ze zmienną. Jedyna różnica między nimi polega na tym, że wszystkie deklaracje funkcji są podnoszone na szczyt zakresu, co może mieć znaczenie w niektórych przypadkach. W przeciwnym razie są równe. function foo()
to forma skrócona. Więcej informacji na temat podnoszenia można znaleźć w artykule Scoping i podnoszenia w JavaScript .
Definiowanie metod w ciele obiektu lub używanie „prototypu”
To zależy od Ciebie. JavaScript ma cztery wzorce tworzenia obiektów: pseudoklasyczny, prototypowy, funkcjonalny i częściowy ( Crockford, 2008 ). Każdy ma swoje zalety i wady, zobacz Crockforda w swoich rozmowach wideo lub zdobądź książkę The Good Parts, jak już sugerował Anon .
Ramy
Sugeruję, abyś podniósł niektóre frameworki JavaScript, zapoznał się z ich konwencjami i stylem oraz znalazł te praktyki i wzorce, które najlepiej do Ciebie pasują. Na przykład Dojo Toolkit zapewnia solidną strukturę do pisania obiektowego kodu JavaScript, który obsługuje nawet wielokrotne dziedziczenie.
Wzory
Na koniec jest blog poświęcony badaniu typowych wzorców JavaScript i anty-wzorców . Sprawdź także pytanie Czy istnieją jakieś standardy kodowania dla JavaScript? w przepełnieniu stosu.