2013-02-19 12 views
7

Sono presenti rischi durante l'omissione di virgole nelle dichiarazioni variabili per node.js? Ad esempio, dichiarando alcune variabili globali, come le seguenti opere che bene:Le virgole sono necessarie in Node.js?

express = require('express') 
jade = require('jade') 

E io non voglio scrivere virgole se è sicuro di non scrivere loro (non mi importa di "bellezza/chiarezza del codice " argomenti).

Importante: Intendo virgole, non punto e virgola (ottenuto 3 risposte sul punto e virgola). È perfettamente OK e anche consigliato rimuovere il punto e virgola da node.js. Il creatore di NPM fa anche: http://blog.izs.me/post/3393190720/how-this-works

In caso di dubbio, controllare gli ultimi javascript specifiche: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

Si noti che anche voi non dovete scrivere

var 

per le variabili globali.

Ma questa domanda riguarda "virgole", quindi per favore non sostituire per errore virgole con punto e virgola quando si modifica la mia domanda (eseguita prima).

+2

vuoi dire punto e virgola, non le virgole? – JohnnyHK

+1

In realtà intendo le virgole – user1943231

+0

L'esempio che hai inserito non ha bisogno di virgole e non riesco a pensare a una situazione in cui una virgola è opzionale. – JohnnyHK

risposta

0

In breve, no. I problemi che potresti incontrare si presenteranno quando andrai a fare cose come la minificazione del codice e il compilatore pensa che le tue due affermazioni siano una. In ogni caso, se si sceglie di non usare virgole/punto e virgola, che è assolutamente sconsigliato, si dovrebbe andare bene.

+1

Un minificatore che interrompe il codice? Per favore dimmi il nome, quindi non lo uso mai. –

+0

Ho letto di questi problemi qui -> http://dailyjs.com/2012/04/19/semicolons/ – Hacknightly

+0

Ragazzi, sto parlando di COMMAS, non di punto e virgola – user1943231

18

In JavaScript, se non si scrive punto e virgola;, verranno inseriti per te, invisibilmente. E non sempre ti piace dove vanno.

Non è tecnicamente necessario terminare ogni istruzione con un punto e virgola. Tuttavia, la maggior parte lo considerano una buona idea.

Per ulteriori informazioni, esaminare i risultati di this google search. Abbiamo discusso di questo argomento per molto tempo.


Ecco un esempio del perché questo è più complesso di quanto sembri a prima vista. Sebbene non sia tecnicamente necessario terminare ogni istruzione con un punto e virgola, ci sono alcuni casi in cui DEVI o le cose si rompono. Non puoi ometterli completamente nella maggior parte delle codebase.

foo.def = bar 
(function() { 
    // some self executing closure 
})() 

Sembra abbastanza semplice, giusto? Bene, l'interprete guarda e fa questo:

foo.def = bar(function() { 
    // some self executing closure 
})() 

Quale probabilmente non è quello che ti aspettavi. Il modo per risolverlo è con un punto e virgola.

foo.def = bar; 
(function() { 
    // some self executing closure 
})() 

Ci sono un sacco di casi come questo. Puoi impararli tutti e usarli solo in questi casi, e quando inevitabilmente ti dimentichi di provare a eseguire il debug del codice che sta facendo qualcosa di così strano e bizzarro che ti strappano i capelli ore ... "cosa intendi per wtfvar? non è una funzione?!? Non dovrebbe essere una funzione! "

Oppure è possibile utilizzare solo il punto e virgola con coerenza.

+0

Sono io o il tuo codice non è valido? Hai una staffa in più alla fine di ogni esempio. –

+0

@ Jean-PhilippeLeclerc whoops :) grazie –

+1

In realtà intendo virgola, non punto e virgola – user1943231

0

Node.js utilizza il motore V8 per leggere il codice in modo che si comporti come in Google Chrome. Detto questo, non usare il punto e virgola è in generale una cattiva pratica. L'interprete proverà a capire il tuo codice e potrebbe essere a volte sbagliato (per colpa tua).

Check this out per una spiegazione completa: Do you recommend using semicolons after every statement in JavaScript?

+2

Non usare il punto e virgola non è una cattiva pratica: http://blog.izs.me/post/3393190720/how-this-works – user1943231

+0

In caso di dubbio, basta controllare le specifiche: http://www.ecma-international.org /publications/files/ECMA-ST/Ecma-262.pdf – user1943231

+1

Questa è probabilmente una cattiva pratica. Javascsript è un linguaggio che dovrebbe funzionare allo stesso modo, indipendentemente dalla formattazione. –

0

Questa risposta molto tardi va solo per cancellare confustion per altri che potrebbero leggere questo.

Visto che siete in realtà parlando di virgole, non un punto e virgola, posso solo supporre che si dispone di un malinteso di ciò che è implicito che viene aggiunto dal motore.

Le virgole sono non facoltativo. E questo codice:

express = require('express') 
jade = require('jade') 

che viene implicitamente convertito in questo:

var express = require('express'); 
var jade = require('jade'); 
non

questo, che si potrebbe essere in attesa:

var express = require('express'), 
    jade = require('jade'); 
Problemi correlati