Risposte:
I punti e virgola dopo le dichiarazioni di funzione non sono necessari .
La grammatica di a FunctionDeclarationè descritta nelle specifiche come questa:
function Identifier ( FormalParameterListopt ) { FunctionBody }
Non è necessario un punto e virgola grammaticalmente richiesto, ma potresti chiederti perché?
I punti e virgola servono per separare le dichiarazioni l' una dall'altra e a FunctionDeclarationnon è una dichiarazione .
FunctionDeclarationsvengono valutati prima che il codice entri in esecuzione, il sollevamento è una parola comune utilizzata per spiegare questo comportamento.
I termini "dichiarazione di funzione" e "istruzione di funzione" sono spesso usati erroneamente in modo intercambiabile, poiché non vi è alcuna istruzione di funzione descritta nella specifica ECMAScript, tuttavia ci sono alcune implementazioni che includono un'istruzione di funzione nella loro grammatica, - in particolare Mozilla - ma ancora questo non è standard.
Tuttavia, i punti e virgola sono sempre consigliati dove si utilizza FunctionExpressions, ad esempio:
var myFn = function () {
//...
};
(function () {
//...
})();
Se si omette il punto e virgola dopo la prima funzione nell'esempio precedente, si otterranno risultati completamente indesiderati:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
La prima funzione verrà eseguita immediatamente, poiché le parentesi che circondano la seconda, verranno interpretate come la Argumentschiamata di una funzione.
Lezioni consigliate:
FunctionDeclarationvs FunctionExpression)Li uso dopo dichiarazioni di funzione come variabile:
var f = function() { ... };
ma non dopo le definizioni in stile classico:
function f() {
...
}
JS Lint è una convenzione di fatto e non dice punto e virgola dopo il corpo della funzione. Vedi la sezione "Punto e virgola" .
Rimani coerente! Non sono necessari, ma li uso personalmente perché la maggior parte delle tecniche di minificazione si basano sul punto e virgola (ad esempio Packer ).
Dipende solo dalle tue preferenze. Mi piace terminare le righe di codice con punti e virgola perché sono abituato a Java, C ++, C #, ecc., Quindi uso gli stessi standard per la codifica in JavaScript.
Tuttavia, in genere non termino le dichiarazioni di funzione tra punti e virgola, ma questa è solo la mia preferenza.
I browser funzioneranno in entrambi i modi, ma forse un giorno escogiteranno alcuni standard più severi che lo governano.
Esempio di codice che scriverei:
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
In realtà è più di un problema di convenzione o coerenza.
Sono abbastanza certo che non posizionare i punti e virgola dopo ogni istruzione rallenta il parser interno perché deve capire dove si trova la fine dell'istruzione. Vorrei avere alcuni numeri utili per confermarlo positivamente, ma forse puoi cercarlo tu stesso. :)
Inoltre, quando si comprime o si minimizza il codice, la mancanza di punti e virgola può portare a una versione ridotta dello script che non fa ciò che si desidera perché tutto lo spazio bianco scompare.
Quando ho minimizzato i miei script mi sono reso conto che ho bisogno di usare il punto e virgola per le funzioni che iniziano con il segno di uguale. se si definisce una funzione come var, sì, è necessario utilizzare il punto e virgola.
bisogno di punto e virgola
var x = function(){};
var x = new function(){};
this.x = function(){};
non è necessario il punto e virgola
function x(){}
SEMPLICE:
È buona norma lasciare i punti e virgola ;dopo la fine delle parentesi graffe della funzione. Sono stati considerati le migliori pratiche per anni.
Un vantaggio di usarli sempre è se vuoi minimizzare il tuo JavaScript.
Come minimizzare Javascript, aiuta a ridurre un po 'le dimensioni del file.
Ma per quanto riguarda la best practice e la risposta sopra, non è consigliabile utilizzarlo dopo un tag di funzione.
Se NON usi i punti e virgola e se vuoi minimizzare (come piace a molti sviluppatori se il loro sito serve molto JavaScript) potresti ricevere tutti i tipi di errori / avvisi.
il punto e virgola dopo una funzione non è necessario utilizzarla o meno, non causa errori nel programma. tuttavia, se prevedi di minimizzare il codice, è consigliabile utilizzare i punti e virgola dopo le funzioni. ad esempio, hai un codice come quello qui sotto
//file one
var one=1;
var two=2;
function tryOne(){}
function trytwo(){}
e
//file two
var one=1;
var two=2;
function tryOne(){};
function trytwo(){};
quando minimizzi entrambi, otterrai quanto segue come output
//file one
var one=1;var two=2;function tryOne(){}
function trytwo(){}
e
//file two
var one=1;var two=2;function tryOne(){};function trytwo(){};