2012-02-09 13 views
10

Patrzę na dokument Douglasa Crockforda Code Conventions for JavaScript, a on mówi, że var s powinno być alfabetyczne, i jedno na linię.Deklaracja pojedynczego wiersza "var" lub po jednym w wierszu?

var a;     // array of class names 
var c = node.className; // the node's classname 
var i;     // loop counter 

Jednak jsLint (i jsHint) standard jest zadeklarować je w jednej linii, a to generuje ten błąd, jeśli odbywa się drogą Crockforda za

zbyt wiele wypowiedzi var

Dlatego jsLint chce, aby tak się stało.

var a, c = node.className, i; 

To wydaje się dość sprzeczne ze mną i choć prawdopodobnie dość minutę w ogólnym zakresie programowania, mam nadzieję, że się tego prawa, zanim się to źle.

Jaka jest ogólnie akceptowana praktyka podczas deklarowania vars JavaScript?

+8

Głosuję po jednym w każdym wierszu. – Zenexer

+2

Kolejny adwokat jeden na jednego; znacznie łatwiejsze do odczytania, IMO. –

+1

Jeśli potrzebujesz ułożyć je alfabetycznie, argumentowałbym, że funkcja jest zbyt duża ... –

Odpowiedz

13

LINT chce pojedynczej deklaracji deklaracji var, ale może być rozłożona na wiele linii.

var a, b, c; 

lub

var a, 
    b, 
    c; 

Powodem chce pojedynczej instrukcji jest, aby uniknąć nieporozumień, o których zmienne należą do zakresu lokalnego.Z pojedynczą instrukcją var wszystkie zmienne o zasięgu lokalnym są zawarte w jednym miejscu w zasięgu i każdy może szybko odczytać kod, aby zobaczyć, czym on jest.

Zaleca się również, aby deklaracja ta znajdowała się na pierwszym miejscu, ponieważ mechanizm podnoszący JavaScript przenosi je przed wykonaniem. Pisząc kod, aby oczekiwać tego stwierdzenia na górze zakresu, mechanizm podnoszący nie może powodować żadnych nieoczekiwanych zachowań.

0

Możesz zadeklarować wiele zmiennych i przypisać je w tym samym wierszu. Jest to kwestia osobistych preferencji.

2

Argument to przede wszystkim dyskusja styl, jednak jest znacznie ważniejsze uzgodnić standardową i mieć swój zespół konsekwentnie je stosować.

3

Żadna z tych metod nie jest zła, ale generalnie wolę używać deklaracji stylu pojedynczego wiersza na początku bloku kodu. Najważniejsze jest, aby zachować spójność. Przykład:

function() { 
    var foo = "bar", 
     number = 123, 
     etc = "..."; 

    // stuff.. 
} 
+1

Dzięki @ jdc0589 jest to pomocne. Sądzę, że nie powinienem był mówić "złego", ponieważ wiem, że obie metody działają. Bardziej strzelam do ogólnie przyjętej metody, która na podstawie dowodów zawartych w odpowiedziach wskazuje na to podejście na pewno. –

3

Nawet kombinacja jest w porządku. Tu chodzi o preferencje. Jeśli pracujesz z zespołem, zapytaj o preferencje i zachowaj spójność.

var a, 
    c = node.className, 
    i; 
+0

ah tak, to jest bardzo dobre. Pasuje do obu kierunków. Nie narusza jsLint i nadal przestrzega standardu Crockford. –

2

Inną opcją (jest to jeden używam) to:

var a = ..., 
    b = ..., 
    c, d; 

To pokazuje, jak wiele zmiennych i jestem oświadczając, że wszystkie one są związane w jakiś sposób (od I m deklarując je w tej samej przestrzeni, w zasadzie zawsze są). Pomaga także rozróżnić zmienne, które już mają wartości, a które nie. To powiedziawszy, deklaruję tylko zmienne bez przypisywania bardzo rzadko.

Jeśli nie pracuję z kodem zgodnym z innym standardem, robię to. I to jest najważniejsze: podążaj za stylem swojego projektu. W przeciwnym razie przejdź do swoich preferencji. Jeśli naprawdę Cię to nie obchodzi, użyj mojego stylu;)

+3

"wyjaśnia"? Nie podążam. Szybkie spojrzenie pokazuje, że deklarujesz trzy zmienne, ponieważ istnieją trzy linie. Jednak dokładniejsza inspekcja pokazuje, że faktycznie deklarujesz cztery. Czy naprawdę myślisz, że użycie trzech linii do zadeklarowania czterech zmiennych jest jasne? –

Powiązane problemy