Virgolette singole e doppie ('vs ")


250

Ho sempre usato virgolette singole quando scrivevo il mio HTML a mano. Lavoro con molto HTML renderizzato che usa sempre doppie virgolette. Questo mi permette di determinare se l'HTML è stato scritto a mano o generato. E 'questa una buona idea?

Qual è la differenza tra i due? So che funzionano entrambi e sono supportati da tutti i browser moderni, ma c'è davvero una differenza in cui uno è effettivamente migliore dell'altro in situazioni diverse?



5
Per rispondere alla domanda se utilizzare virgolette singole o doppie come mezzo per determinare HTML scritto a mano vs generato, no probabilmente non è una buona idea. Mentre il codice che è incoerente (usa il singolo in alcuni punti, il doppio in altri) è probabilmente scritto a mano, sono sicuro che molte persone (incluso me stesso) usano le doppie virgolette ovunque, ma il nostro codice non è certamente generato dal computer; )
Doktor J,

La risposta di @Aito è davvero corretta e dovrebbe essere accettata ... Personalmente, uso virgolette singole per attributi brevi come singole parole chiave / tag, URL e riferimenti; tutto ciò che non è destinato a essere letto dall'essere umano, in realtà. Per testi più lunghi o qualsiasi cosa che possa includere spazi o virgolette singole / apostrofi - come contenuto, uso doppie virgolette. È solo una questione di stile (o della guida di stile che usi)
cedbeu,

1
controlla 10 siti Web principali e scopri cosa usano la maggior parte di essi, come stackoverflow, youtube / google, wikipedia. Finora ho difficoltà a trovare i principali siti Web che utilizzano virgolette singole.
Timo Huovinen,

Risposte:


391

L'org w3 ha detto :

Per impostazione predefinita, SGML richiede che tutti i valori degli attributi siano delimitati utilizzando virgolette doppie (ASCII decimale 34) o virgolette singole (ASCII decimale 39). Le virgolette singole possono essere incluse nel valore dell'attributo quando il valore è delimitato da virgolette doppie e viceversa. Gli autori possono anche utilizzare riferimenti a caratteri numerici per rappresentare virgolette doppie ( ") e virgolette singole ( '). Per le virgolette doppie gli autori possono anche usare il riferimento all'entità carattere ".

Quindi ... sembra non fare differenza. Dipende solo dal tuo stile.


38
ed essere coerenti (con 'o ") molto probabilmente comporterà tassi di compressione più alti nel caso serviate pagine compresse (gzip, deflate)
cherouvim

2
@Aito, questo è per SGML. Per HTML, non tutti i valori degli attributi devono essere delimitati
Pacerier il

4
Suggerisco però single over double - perché usarne due quando si può fare il lavoro.
Ujjwal Singh,

7
@JohnHunt: ho appena fatto un rapido test su un file js di 1823 byte (un modello di backbone casuale da un'applicazione casuale). L'output di gzip se tutte le virgolette sono uguali (o 'o ") era 809 byte. Mescolandoli ha spinto l'output fino a 829 byte. Questo può essere irrilevante per te, ma ciò non significa che sia irrilevante per tutti.
Cherouvim,

3
Se uno dice "oh è un potenziale così basso, probabilmente irrilevante" a cento cose "probabilmente irrilevanti", ne consegue la morte di mille aghi. Con uno sforzo ragionevole, tutto ciò che puoi salvare vale la pena salvare l'IMO.
IL CONTRATTO DICE CHE SONO GIUSTO il

67

Uso "come primo livello e 'come secondo livello, come immagino la maggior parte delle persone. Per esempio

<a href="#" onclick="alert('Clicked!');">Click Me!</a>

In questo esempio, è necessario utilizzare entrambi, è inevitabile.


38
Lo faccio anche io, ma può essere evitato se si evita di incorporare JavaScript all'interno di HTML.
Cherouvim

4
Esistono altre situazioni non in-javascript in cui potrebbero essere richieste virgolette singole, ad esempio quando si utilizzano data-*attributi personalizzati . A seconda dell'applicazione e del modo in cui utilizzi gli data-*attributi, potresti dover usare '"entro "". A volte li usiamo per il monitoraggio degli eventi di Google Analytics:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
Jake Wilson,

3
Consideravar x = "<a href='" + url + "'>click me</a>";
NibblyPig

4
Può essere facilmente evitato in questo modo: <a onclick="alert(\"Clicked!\")">. Tuttavia, questo è molto meno leggibile.
fabspro,

2
Tuttavia, non sono del tutto sicuro che ciò sia ufficialmente supportato da SGML e HTML5.
fabspro,

26

Convenzioni di quotazione per sviluppatori Web

La risposta breve

In HTML l'uso di virgolette singole (') e doppie (") sono intercambiabili, non c'è differenza.

Ma è raccomandata la coerenza, quindi dobbiamo scegliere una convenzione di sintassi e usarla regolarmente.

La lunga risposta

Lo sviluppo Web spesso consiste in molti linguaggi di programmazione. HTML, JS, CSS, PHP, ASP, RoR, Python, ect. Per questo motivo abbiamo molte convenzioni di sintassi per diversi linguaggi di programmazione. Spesso gli habbit di una lingua ci seguiranno in altre lingue, anche se non è considerato "corretto", vale a dire le convenzioni di commento. Anche le convenzioni di citazione rientrano in questa categoria per me.

Ma tendo a usare l'HTML in stretta collaborazione con PHP. E in PHP c'è una grande differenza tra virgolette singole e doppie. In PHP con virgolette doppie "puoi inserire le variabili direttamente nel testo della stringa". (scriptingok.com) E quando si usano virgolette singole "il testo appare così com'è". (scriptingok.com)

PHP impiega più tempo per elaborare stringhe tra virgolette doppie . Poiché il parser PHP deve leggere l'intera stringa in anticipo per rilevare qualsiasi variabile all'interno e concatenarla, l'elaborazione richiede più tempo rispetto a una singola stringa tra virgolette. (scriptingok.com)

 

Le virgolette singole sono più facili sul server . Poiché PHP non ha bisogno di leggere l'intera stringa in anticipo, il server può funzionare più velocemente e più felice. (scriptingok.com)

Altre cose da considerare

  1. Frequenza delle virgolette doppie all'interno della stringa. Trovo che devo usare le virgolette doppie (") all'interno delle mie stringhe più spesso di quanto sia necessario usare le virgolette singole (') all'interno delle stringhe. Per ridurre il numero di escape di caratteri necessari, preferisco i delimitatori a virgoletta singola.
  2. È più facile fare una singola citazione. Questo è abbastanza autoesplicativo, ma per chiarire, perché premere il tasto MAIUSC più volte di quanto è necessario.

La mia convenzione

Con questa comprensione di PHP ho stabilito la convenzione (per me e per il resto della mia azienda) che le stringhe devono essere rappresentate come virgolette singole per impostazione predefinita per l'ottimizzazione del server. Le virgolette doppie vengono utilizzate all'interno della stringa se sono richieste virgolette come JavaScript all'interno di un attributo, ad esempio:

<button onClick='func("param");'>Press Me</button>

Naturalmente se siamo in PHP e vogliamo che il parser gestisca le variabili PHP all'interno della stringa, dovremmo usare intenzionalmente virgolette doppie. $a='Awesome'; $b = "Not $a";

fonti

Virgolette singole vs virgolette doppie in PHP. (nd). Estratto il 26 novembre 2014 da http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP


3
La differenza di rendimento tra virgolette singole e virgolette doppie in PHP era nota per essere zero anni prima che tu rispondessi a questa domanda: nikic.github.io/2012/01/09/…
Conor Mancone

1
Trovi più virgolette doppie che virgolette singole nelle tue stringhe? Interessante. Non ricordo l'ultima volta che ho avuto una doppia virgoletta nelle mie corde.
Zonker.in

Costantemente. Negli ultimi 10 anni come sviluppatore full-stack mi ritrovo a dover usare virgolette doppie all'interno di una stringa 10 volte più spesso delle virgolette singole. L'esempio più comune di JavaScript è che i selettori di attributi funzionano SOLO con virgolette doppie, quindi document.querySelector("[name^='myname']")non funzionano affatto mentre document.querySelector('[name^="myname"]')funzionano perfettamente.
Dustin Poissant,

@DustinPoissant WHAAAT ?? Su quale browser ??
Sig. Lister,

14

Se è lo stesso, forse è meglio usare le virgolette singole poiché non richiede di tenere premuto il tasto Maiusc. Meno tasti == meno possibilità di RSI.


2
bene, almeno sul layout del Galactic Common. (silenzio-silenzio)
n611x007,

1
Qual è il rischio di RSI e il numero di sequenze di tasti ha a che fare con gli standard di codifica?
Dib

così tante opinioni che non c'è differenza tra virgolette singole e doppie, ma solo una che chiarisce che il numero di sequenze di tasti differisce di un fattore DUE. E abbiamo bisogno di molte citazioni. Posso aggiungere con il suggerimento che forse richiederà più neuroni per sparare per il riconoscimento del modello di una doppia citazione nel nostro cervello?
Roland,

Questo non è vero per le tastiere francesi.
Tokeeen.com

11

In HTML non credo sia importante se lo usi "o ', ma dovrebbe essere usato in modo coerente in tutto il documento.

Il mio uso preferisce l'utilizzo di attributi / html ", mentre 'invece utilizza tutto javascript .

Questo rende leggermente più facile, per me, leggere e controllare. Se il tuo uso ha più senso per te del mio, non c'è bisogno di cambiare. Ma, per me, il codice sarebbe sentire disordinato. È tutto personale.


Perché deve essere utilizzato in modo coerente? Solo per leggibilità?
agenda del

Perché è più facile evitare gli errori in questo modo.
David dice di reintegrare Monica il

2
Spesso uso "anche gli attributi , ma altre volte scrivo codice in codice PHP dove preferirei l' echouso "per consentire l'analisi. Qualsiasi attributo html all'interno di questo eco è più leggibile se si utilizza ''s. Certo non è coerente, ma è molto più facile senza tutte le barre rovesciate.
agenda del

3
Qualunque cosa funzioni per te va bene; essere coerenti non significa "fare sempre X" significa solo "nella situazione X farlo in questo modo", la coerenza può essere consapevole del contesto; ed è meglio usato come tale.
David dice di ripristinare Monica

9

In realtà, il modo migliore è il modo in cui Google consiglia. Virgolette doppie: https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Quotation_Marks#HTML_Quotation_Marks

Vedi https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Validity#HTML_Validity Suggerimenti citati da Google: "L'uso di HTML valido è un attributo misurabile della qualità di base che contribuisce all'apprendimento di requisiti tecnici e vincoli e che garantisce corretto utilizzo dell'HTML ".


La stragrande maggioranza dei siti Web che ho incontrato finora, tra cui stackoverflow, utilizza le doppie virgolette, penso che la coerenza sul web sia in meglio, quindi la risposta corretta IMHO è anche "doppie virgolette".
Timo Huovinen,

2
Ma perché!? Perché "finita '! ??
San

2
Coerenza @San, principalmente. Segue lo standard inglese americano secondo cui le virgolette doppie sono per virgolette e le virgolette singole sono per virgolette.
Nielsvh,

6

So che MOLTE persone non sarebbero d'accordo, ma questo è quello che faccio e mi piace molto un tale stile di codifica: in realtà non uso alcuna citazione in HTML a meno che non sia assolutamente necessario.

Esempio:

<form method=post action=#>
<fieldset>
<legend>Register here: </legend>
  <label for=account>Account: </label>
  <input id=account type=text name=account required><br>
  <label for=password>Password: </label>
  <input id=password type=password name=password required><br>
...

Le virgolette doppie vengono utilizzate solo quando ci sono spazi nei valori degli attributi o altro:

<form class="val1 val2 val3" method=post action=#>
  ...
</form>

1
C'è un motivo dietro? O semplicemente "ti piace davvero questo stile di programmazione"?
Bugs Bunny,

4
Senza virgolette l'HTML appare molto più pulito (e la dimensione del file è un po 'più piccola). Questa è l'unica ragione e nient'altro. Inoltre, non riesco davvero a vedere il punto in cui è necessario che ogni attributo abbia virgolette. Perché non può essere semplicemente omesso per salvare il problema? Anche w3.org accetta valori di attributi non quotati ( w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted ). Semplice è meglio di complesso. È una specie di religione avere delle citazioni?
Randy Tang,

5
No, nessuna religione di cui io sia a conoscenza. Sono in giro per HTML da un po 'di tempo e non ho mai visto il tuo stile usato prima ... quindi ho chiesto.
Bugs Bunny,

1
Inoltre, i minificatori HTML eliminano anche le virgolette non necessarie.
Nimrod,

2
Il problema di tralasciare le virgolette attorno ai valori degli attributi è che standard diversi hanno diversi elenchi di caratteri che devono essere citati. Ad esempio, HTML4 ha detto che solo i valori costituiti da lettere, cifre, trattini e punti potrebbero non essere citati, ma HTML5 dice che tutto va oltre gli spazi e "'' <=>, quindi dovresti stare attento, specialmente con i browser più vecchi!
Mr Lister

5

Utilizzo di virgolette doppie per HTML

vale a dire

<div class="colorFont"></div>

Utilizzo di virgolette singole per JavaScript

vale a dire

$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');

2

Ho avuto un problema con Bootstrap in cui l'uso delle virgolette doppie era importante rispetto all'utilizzo della virgoletta singola (che non funzionava). class = 'row-fluid' mi ha dato problemi che causavano la caduta dell'ultimo span al di sotto degli altri span piuttosto che stare bene accanto all'estrema destra, mentre class = "row-fluid" ha funzionato.


1

se stai scrivendo asp.net, di tanto in tanto devi usare le virgolette doppie nelle istruzioni Eval e le virgolette singole per delimitare i valori - questo principalmente perché il codice inline C # sappia che sta usando una stringa nel contenitore eval piuttosto che un carattere. Personalmente userei solo l'uno o l'altro come standard e non li mescolerei, sembra disordinato, tutto qui.


1

Utilizzando "anziché" quando:

<input value="user"/> //Standard html
<input value="user's choice"/> //Need to use single quote
<input onclick="alert('hi')"/> //When giving string as parameter for javascript function

Usando 'invece di "quando:

<input value='"User"'/> //Need to use double quote
var html = "<input name='username'/>" //When assigning html content to a javascript variable

3
Nel tuo caso di "assegnazione di contenuti html a variabili js", di solito preferisco fare il contrario: var html = '<input name="username" />';e mantenere la coerenza con il resto di html :)
Erenor Paz

1

Non fa alcuna differenza per l'html, ma se si genera HTML in modo dinamico con un altro linguaggio di programmazione, un modo potrebbe essere più semplice di un altro.

Ad esempio in Java la virgoletta doppia viene utilizzata per indicare l'inizio e la fine di una stringa, quindi se si desidera includere una doppia virgola all'interno della stringa, è necessario evitarlo con una barra rovesciata.

String s = "<a href=\"link\">a Link</a>"

Non hai un problema del genere con la virgoletta singola, quindi l'uso della virgoletta singola rende il codice più leggibile in Java.

String s = "<a href='link'>a Link</a>"

Soprattutto se devi scrivere elementi html con molti attributi (Nota di solito uso una libreria come jhtml per scrivere html in Java, ma non sempre pratico per farlo)


Ha fatto due stage su servlet. Stavo analizzando il mio codice e solo ora ho iniziato a realizzare la realtà su virgolette doppie, virgolette singole e concatenazioni di stringhe. Il sito web che ho usato per studiare utilizzava virgolette doppie in HTML e virgolette singole in Java. Non me ne sono nemmeno accorto. Sono contento di averlo finalmente capito ...
Michael,

0

Sono un novizio qui, ma uso virgolette singole solo quando uso la virgoletta doppia all'interno della prima. Se non sono chiaro, vi mostro un esempio:

<p align="center" title='One quote mark at the beginning so now I can
"cite".'> ... </p>

Spero di aver aiutato.


-5

In PHP l'uso di virgolette doppie causa una leggera diminuzione delle prestazioni perché vengono valutati i nomi delle variabili, quindi in pratica, uso sempre virgolette singole quando scrivo codice:

echo "This will print you the value of $this_variable!";
echo 'This will literally say $this_variable with no evaluation.';

Quindi puoi scrivere questo;

echo 'This will show ' . $this_variable . '!';

Credo che Javascript funzioni allo stesso modo, quindi un piccolissimo miglioramento delle prestazioni, se questo è importante per te.


Inoltre, se guardi fino in fondo alla specifica HTML 2.0, tutti i tag elencati qui;

Riferimento DTD HTML W3

(Usa virgolette doppie.) La coerenza è importante, indipendentemente dal fatto che tendi a usarla più spesso.


13
JavaScript non valuta i nomi delle variabili nelle stringhe. Non c'è alcuna differenza tra 'e "in JavaScript.
John Mellor

-9

Le virgolette doppie vengono utilizzate per le stringhe (ovvero "questa è una stringa") e le virgolette singole vengono utilizzate per un carattere (ovvero, "a", "b" o "c"). A seconda del linguaggio di programmazione e del contesto, è possibile evitare l'uso di virgolette doppie per un carattere ma non virgolette singole per una stringa.

All'HTML non importa quale usi. Tuttavia, se stai scrivendo HTML all'interno di uno script PHP, dovresti attenersi alle doppie virgolette poiché dovrai sfuggirle (ad esempio, "qualunque cosa") per evitare di confondere te stesso e PHP.


Conosco diversi linguaggi di programmazione, ma uno in cui questo è vero.
mikl

1
@mikl pratica generale in C # e Java sono stringhe tra virgolette doppie e caratteri tra virgolette singole. Ma ciò non dà alcuna conferma per questa risposta. A meno che questa non sia la risposta a una domanda diversa.
Evorlor,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.