2010-07-16 18 views
8

Ho visto un triplo punto e virgola in alcune espressioni qua e là.
Ha qualche effetto logico?Cosa fa tre punti e virgola in un'espressione javascript?

La cosa più vicina che ho visto per una spiegazione è che dice al compressore di Dean Edwards di ignorare quella linea.

;;; var someVar = 'Rebel'; 
+0

Si prega di inviare alcuni esempi. Potrebbe avere significati diversi in contesti diversi. – FrustratedWithFormsDesigner

+0

Esempio di codice? Non credo che sia una convenzione o una sintassi speciale che io abbia mai incontrato. –

+0

Potresti pubblicare un esempio? Se non sbaglio, ';;;' è equivalente a ';', poiché un'istruzione vuota non fa nulla. Immagino che qualcuno stia usando ';;;' per eliminare il codice o qualcosa del genere. Inoltre, assicurati che il codice che stai leggendo sia in realtà JavaScript :-) –

risposta

11

Le righe che iniziano con tre punti e virgola sono disponibili per il codice di debug: indica che quelle linee non dovrebbero apparire nell'ambiente di produzione. Il Javascript viene eseguito tramite un compressore o qualche altro algoritmo che rimuove le righe ;;; durante la creazione del file JS ottimizzato.

;;; console.log("only run this line when debugging!"); 

Come indicato sopra, tre punti e virgola effettivamente non fa nulla in Javascript: termina solo tre dichiarazioni vuote consecutive. Se un commento vero e proprio è stato utilizzato

// console.log("only run this line when debugging!"); 

allora dovreste andare a rimuovere manualmente tutti i commenti quando si voleva per entrare in modalità di debug, e poi andare in e metterli di nuovo quando sono stati fatti. L'altra soluzione è quella di creare una variabile DEBUG e avvolgere tutte le linee di debug in una condizione:

var DEBUG = true; 
if(DEBUG){ 
    console.log("only run this line when debugging!"); 
} 

ma questo è un po 'ingombrante e in realtà aggiunge il codice non necessario al documento Javascript. Naturalmente è possibile eseguire il JS attraverso un compressore per rimuovere le condizioni DEBUG, ma a quel punto si potrebbe anche usare il metodo ;;;, che è più semplice.

Vedere this question per un esempio di vita reale di questo. A proposito, penso che la sintassi provenga da emacs.

+0

Modo per essere urtato su 1k. –

+3

come non si vota più? – Joe

+0

sembra che 'grunt-contrib-uglify' non lo rimuoverà. – atian25

18

Niente. Assolutamente niente.

Tre punti e virgola, dieci punti e virgola, cento punti e virgola, vengono interpretati tutti allo stesso risultato: nulla.

+1

Fammi essere conosciuto come il tizio che ti ha preso più di 10K rep. :) – ChaosPandion

+0

@Chaos, grazie amico! –

+1

@Gert - Misuro anche il tempo in nano secondi. :) – ChaosPandion

1

Sono dichiarazioni vuote e non hanno alcun effetto. È possibile che l'interprete o il compilatore li rimuova a meno che non sia richiesta una sintassi dalla sintassi.

25

Fa sì che le persone facciano domande su StackOverflow.

Oltre a ciò, non fa nulla.

8

Termina una dichiarazione vuota 3 volte.

+0

Hmm, penso che sappiamo solo due dichiarazioni vuote. Non sappiamo che i tre punti e virgola non seguono un'istruzione non vuota. – ghoti

+0

Risposta come da codice OPs. – Incognito

+0

La mia lettura della domanda è stata che il codice postato era "la cosa più vicina [che aveva] visto", non necessariamente uno degli esempi che ha "visto ... qui e là". Il codice dell'OP è chiaro riguardo solo a due dichiarazioni vuote tra i quattro punti e virgola mostrati. – ghoti

Problemi correlati