2012-02-09 2 views
10

Sto guardando il documento Code Conventions for JavaScript di Douglas Crockford e sta dicendo che lo var deve essere in ordine alfabetico e uno per riga.Dichiarazioni 'var' a riga singola o una per riga?

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

Tuttavia, il jsLint (e jsHint) standard è di dichiarare loro su una singola linea, e getta questo errore se fatto via di Crockford

troppe dichiarazioni var

Pertanto, jsLint vuole farlo in questo modo.

var a, c = node.className, i; 

Questo sembra abbastanza contraddittorio per me, e anche se probabilmente abbastanza minuto nel campo di applicazione generale della programmazione, spero di ottenere questo diritto, prima ho capito male.

Qual è la pratica generalmente accettata quando si dichiarano le variabili JavaScript?

+8

Io voto uno per riga. – Zenexer

+2

Un altro avvocato unipersonale; molto più facile da leggere, IMO. –

+1

Se è necessario organizzarli in ordine alfabetico, direi che la funzione è troppo grande ... –

risposta

13

LINT vuole una singola dichiarazione di dichiarazione var, ma può essere distribuita su più righe.

var a, b, c; 

o

var a, 
    b, 
    c; 

La ragione vuole una singola istruzione è quello di evitare qualsiasi confusione su quali variabili appartengono al campo di applicazione locale.Con una sola istruzione var, tutte le variabili localmente con scope sono contenute in un'unica posizione all'interno dell'ambito e chiunque può leggere il codice rapidamente per vedere quali sono.

È inoltre consigliabile che questa dichiarazione sia in cima all'ambito, poiché il meccanismo di sollevamento JavaScript li sposta li prima dell'esecuzione. Scrivendo il codice in modo che si attesti tale istruzione nella parte superiore dello scope, il meccanismo di sollevamento non può causare alcun comportamento imprevisto.

0

È possibile dichiarare più variabili e assegnarle nella stessa riga. È una questione di preferenze personali.

2

L'argomento è in gran parte una discussione stile, tuttavia, è molto più importante accordo su uno standard e avere il vostro team di utilizzare in modo coerente.

3

In ogni caso non è corretto, ma generalmente preferisco utilizzare dichiarazioni di stile a linea singola all'inizio di un blocco di codice. La cosa più importante è mantenerla coerente. Esempio:

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

    // stuff.. 
} 
+1

Grazie @ jdc0589 questo è utile. Immagino che non avrei dovuto dire "capito male", come so che entrambi i modi funzionano. Sto girando di più per il metodo generalmente accettato, che con l'evidenza nelle risposte, indica sicuramente questo approccio. –

3

Anche una combinazione va bene. Si tratta di preferenza. Se lavori con una squadra, chiedi informazioni sulla preferenza e mantienila coerente.

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

ah sì, questo è molto buono. Adatto a entrambe le direzioni. Non viola jsLint e aderisce allo standard di Crockford. –

2

Un'altra opzione (è quello che uso io) è:

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

Ciò rende chiaro quante variabili sto dichiarando e che sono tutti legati in qualche modo (da quando ho' m dichiarandoli nello stesso spazio, in pratica sono sempre). Inoltre aiuta a distinguere tra variabili che hanno già valori e altre che non lo sono. Detto questo, dichiaro solo variabili senza assegnarle molto raramente.

A meno che non stia lavorando con codice che segue uno standard diverso, questo è quello che faccio. E questa è la cosa più importante: segui lo stile del tuo progetto. Altrimenti, vai secondo la tua preferenza. Se davvero non ti interessa, usa il mio stile;)

+3

"rende chiaro"? Io non seguo. Una rapida occhiata mostra che stai dichiarando tre variabili, poiché ci sono tre linee. Tuttavia, un'ispezione più ravvicinata mostra che in realtà stai dichiarando quattro. Pensi davvero che usare tre righe per dichiarare quattro variabili sia chiaro? –