Comillas simples vs dobles ('vs ")

250

Siempre he usado comillas simples al escribir mi HTML a mano. Trabajo con una gran cantidad de HTML renderizado que siempre usa comillas dobles. Esto me permite determinar si el HTML fue escrito a mano o generado. ¿Es esta una buena idea?

¿Cuál es la diferencia entre los dos? Sé que ambos funcionan y son compatibles con todos los navegadores modernos, pero ¿hay alguna diferencia real en que uno sea realmente mejor que el otro en diferentes situaciones?

ctrlShiftBryan
fuente
55
Para responder a la pregunta sobre si usar comillas simples o dobles como medio para determinar HTML escrito a mano versus generado, no, probablemente no sea una buena idea. Si bien el código que es inconsistente (usa solo en algunos lugares, el doble en otros) probablemente esté escrito a mano, estoy seguro de que muchas personas (incluido yo mismo) usan comillas dobles en todas partes, pero nuestro código ciertamente no es generado por computadora; )
Doktor J
La respuesta de @ Aito es correcta y debería aceptarse ... Personalmente, uso comillas simples para atributos cortos como palabras clave / etiquetas individuales, URL y referencias; todo lo que no está destinado a ser leído por humanos, en realidad. Para textos más largos, o cualquier cosa que pueda incluir espacios o comillas simples / apóstrofes, como contenido, uso comillas dobles. Es solo una cuestión de su estilo (o la guía de estilo que usa)
cedbeu
1
revise 10 sitios web principales y vea qué usa la mayoría de ellos, como stackoverflow, youtube / google, wikipedia. Hasta ahora tengo problemas para encontrar sitios web importantes que utilicen comillas simples.
Timo Huovinen

Respuestas:

391

La organización w3 dijo :

De manera predeterminada, SGML requiere que todos los valores de los atributos se delimiten utilizando comillas dobles (ASCII decimal 34) o comillas simples (ASCII decimal 39). Las comillas simples se pueden incluir dentro del valor del atributo cuando el valor está delimitado por comillas dobles, y viceversa. Los autores también pueden usar referencias de caracteres numéricos para representar comillas dobles ( ") y comillas simples ( '). Para las comillas dobles, los autores también pueden usar la referencia de entidad de caracteres ".

Entonces ... parece no haber diferencia. Solo depende de tu estilo.

Aito
fuente
38
y ser coherente (ya sea con 'o ") probablemente dará como resultado tasas de compresión más altas en caso de que sirva páginas comprimidas (gzip, desinflar)
cherouvim
2
@Aito, eso es para SGML. Para HTML, no todos los valores de los atributos deben delimitarse
Pacerier,
44
Aunque sugiero solo single sobre double: ¿por qué usar dos cuando uno puede hacer el trabajo?
Ujjwal Singh
77
@ JohnHunt: acabo de hacer una prueba rápida en un archivo js de 1823 bytes (un modelo de red troncal aleatorio de una aplicación aleatoria). La salida de gzip si todas las comillas son iguales ( 'o bien ") fue de 809 bytes. Mezclarlos empujó la salida hasta 829 bytes. Esto puede ser irrelevante para usted, pero eso no significa que sea irrelevante para todos.
cherouvim
3
Si uno dice "oh, es un potencial tan bajo, probablemente irrelevante" a un centenar de cosas "probablemente irrelevantes", se produce la muerte de mil agujas. Dentro de un esfuerzo razonable, todo lo que puede ahorrar vale la pena guardar IMO.
CONTRATO DICE QUE ESTOY CORRECTO
67

Lo uso "como un nivel superior y 'como un segundo nivel, como imagino que la mayoría de la gente lo hace. Por ejemplo

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

En ese ejemplo, debe usar ambos, es inevitable.

NibblyPig
fuente
38
Lo hago también, pero se puede evitar si evitas incluir JavaScript en html.
cherouvim
44
Hay otras situaciones de JavaScript no en línea en las que se pueden requerir comillas simples, como cuando se usan data-*atributos personalizados . Dependiendo de su aplicación y de cómo use los data-*atributos, es posible que necesite usar ''s inside "' s. A veces los usamos para el seguimiento de eventos de Google Analytics:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
Jake Wilson,
3
Considerevar x = "<a href='" + url + "'>click me</a>";
NibblyPig
44
Se puede evitar fácilmente de esta manera: <a onclick="alert(\"Clicked!\")">. Sin embargo, esto es mucho menos legible.
fabspro
2
Sin embargo, no estoy completamente seguro de si eso es oficialmente compatible con SGML y HTML5.
fabspro
26

Convenciones de citas para desarrolladores web

La respuesta corta

En HTML, el uso de comillas simples (') y comillas dobles (") son intercambiables, no hay diferencia.

Pero se recomienda la coherencia, por lo tanto, debemos elegir una convención de sintaxis y usarla regularmente.

La larga respuesta

El desarrollo web a menudo consta de muchos lenguajes de programación. HTML, JS, CSS, PHP, ASP, RoR, Python, ect. Debido a esto, tenemos muchas convenciones de sintaxis para diferentes lenguajes de programación. A menudo, los hábitos de un idioma nos seguirán a otros idiomas, incluso si no se considera "apropiado", es decir, comentar convenciones. Citar convenciones también entra en esta categoría para mí.

Pero tiendo a usar HTML estrictamente junto con PHP. Y en PHP hay una gran diferencia entre comillas simples y comillas dobles. En PHP con comillas dobles "puede insertar variables directamente dentro del texto de la cadena". (scriptingok.com) Y cuando se usan comillas simples "el texto aparece tal como está". (scriptingok.com)

PHP tarda más en procesar cadenas dobles entre comillas . Dado que el analizador PHP tiene que leer toda la cadena de antemano para detectar cualquier variable dentro, y concatenarla, lleva más tiempo procesarla que una sola cadena entre comillas. (scriptingok.com)

 

Las comillas simples son más fáciles en el servidor . Como PHP no necesita leer la cadena completa por adelantado, el servidor puede funcionar más rápido y más feliz. (scriptingok.com)

Otras cosas a considerar

  1. Frecuencia de comillas dobles dentro de la cadena. Me parece que necesito usar comillas dobles (") dentro de mis cadenas más de lo que necesito usar comillas simples (') dentro de las cadenas. Para reducir el número de escapes de caracteres necesarios, prefiero los delimitadores de comillas simples.
  2. Es más fácil hacer una cita simple. Esto se explica por sí mismo, pero para aclarar, ¿por qué presionar la tecla MAYÚS más veces de lo necesario?

Mi convención

Con esta comprensión de PHP, he establecido la convención (para mí y para el resto de mi empresa) de que las cadenas deben representarse como comillas simples de forma predeterminada para la optimización del servidor. Las comillas dobles se usan dentro de la cadena si se requieren comillas como JavaScript dentro de un atributo, por ejemplo:

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

Por supuesto, si estamos en PHP y queremos que el analizador maneje variables PHP dentro de la cadena, deberíamos usar comillas dobles intencionalmente. $a='Awesome'; $b = "Not $a";

Fuentes

Comillas simples vs comillas dobles en PHP. (Dakota del Norte). Recuperado el 26 de noviembre de 2014, de http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP

Dustin Poissant
fuente
3
Se sabía que la diferencia de rendimiento entre comillas simples y dobles en PHP era cero años antes de que respondiera esta pregunta: nikic.github.io/2012/01/09/…
Conor Mancone
1
¿Encuentra más comillas dobles que comillas simples dentro de sus cadenas? Interesante. No recuerdo la última vez que tuve una cita doble en mis cadenas.
Zonker.in.Geneva
Constantemente. En los últimos 10 años como desarrollador de pila completa, necesito usar comillas dobles dentro de una cadena 10 veces más que las comillas simples. El ejemplo más común para JavaScript es que los selectores de atributos SOLO funcionan con comillas dobles, por lo document.querySelector("[name^='myname']")que no funcionan en absoluto mientras document.querySelector('[name^="myname"]')funcionan perfectamente.
Dustin Poissant
@DustinPoissant WHAAAT ?? ¿En qué navegador?
Sr. Lister el
14

Si todo es lo mismo, quizás sea mejor usar comillas simples, ya que no requiere mantener presionada la tecla Mayús. Menos pulsaciones de teclas == menos posibilidades de RSI.

stko
fuente
2
bueno, al menos en el diseño galáctico común. (silencio)
n611x007
1
¿Qué tiene que ver el riesgo de RSI y la cantidad de pulsaciones de teclas con los estándares de codificación?
Dib
tantas opiniones que no hay diferencia entre comillas simples y dobles, pero solo una que aclara que el número de pulsaciones de teclas difiere en un factor de DOS. Y necesitamos muchas citas. ¿Puedo agregar con la sugerencia de que tal vez requerirá que se activen más neuronas para el reconocimiento de patrones de una cita doble en nuestro cerebro?
Roland
Eso no es cierto para los teclados franceses.
Tokeeen.com
11

En HTML, no creo que importe si usa "o ', pero debe usarse de manera consistente en todo el documento.

Mi propio uso prefiere los atributos / html ", mientras que todos los javascript los usan '.

Esto hace que sea un poco más fácil, para mí, leer y verificar. Si su uso tiene más sentido para usted que el mío, no hay necesidad de cambio. Pero, para mí, su código se sentiría desordenado. Es personal es todo.

David dice reinstalar a Mónica
fuente
¿Por qué necesita ser usado consistentemente? ¿Solo por legibilidad?
timetofly
Porque es más fácil evitar errores de esa manera.
David dice que reinstale a Mónica el
2
A menudo también uso los atributos ", pero otras veces estoy escribiendo código en código PHP donde preferiría el echouso de "'s' para permitir el análisis. Cualquier atributo html dentro de este eco es más legible si se usa ''s. Claro que no es consistente, pero es mucho más fácil sin todas las barras invertidas.
timetofly
3
Lo que sea que funcione para ti está bien; ser consistente no significa 'siempre hacer X', solo significa 'en la situación X hacerlo de esta manera', la consistencia puede ser consciente del contexto; y se usa mejor como tal.
David dice que reinstale a Mónica el
9

En realidad, la mejor manera es la que recomienda Google. Comillas dobles: https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Quotation_Marks#HTML_Quotation_Marks

Consulte https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Validity#HTML_Validity Consejo citado de Google: "El uso de HTML válido es un atributo de calidad de referencia medible que contribuye al aprendizaje sobre los requisitos y restricciones técnicas, y eso garantiza uso adecuado de HTML ".

Stuart
fuente
La gran mayoría de los sitios web que he encontrado hasta ahora, incluido stackoverflow, usan comillas dobles, creo que la consistencia en la web es mejor, por lo que la respuesta correcta en mi humilde opinión es también "comillas dobles".
Timo Huovinen
2
¿¡Pero por qué!? ¿Por qué "más '?
San
2
Consistencia de @San, principalmente. Sigue el estándar del inglés americano que las comillas dobles son para comillas y las comillas simples son para subcomillas.
Nielsvh
6

Sé que MUCHAS personas no estarían de acuerdo, pero esto es lo que hago y realmente disfruto de ese estilo de codificación: en realidad no uso ninguna cita en HTML a menos que sea absolutamente necesario.

Ejemplo:

<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>
...

Las comillas dobles se usan solo cuando hay espacios en los valores de los atributos o lo que sea:

<form class="val1 val2 val3" method=post action=#>
  ...
</form>
Randy Tang
fuente
1
¿Hay alguna razón detrás? ¿O simplemente "realmente disfrutas de ese estilo de codificación"?
Bugs Bunny
44
Sin comillas, el HTML se ve mucho más limpio (y el tamaño del archivo es un poco más pequeño). Esa es la única razón y nada más. Además, realmente no puedo ver el punto de requerir que cada atributo tenga comillas. ¿Por qué no se puede omitir para salvar el problema? Incluso w3.org acepta valores de atributo no entrecomillados ( w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted ). Lo simple es mejor que lo complejo. ¿Es algún tipo de religión tener citas?
Randy Tang
55
No, no hay religión que yo sepa. He estado usando HTML durante bastante tiempo y nunca había visto tu estilo usado antes ... por lo tanto, pregunté.
Bugs Bunny
1
Además, los minificadores HTML también eliminan las citas innecesarias.
Nimrod
2
El problema con dejar de lado las comillas alrededor de los valores de los atributos es que diferentes estándares tienen diferentes listas de caracteres que deben ser citados. Por ejemplo, HTML4 dijo que solo los valores que consisten en letras, dígitos, guiones y puntos podrían ir sin comillas, pero HTML5 dice que todo vale excepto espacios y "'' <=>, por lo que debe tener cuidado, ¡especialmente con navegadores antiguos!
Sr. Lister
5

Usar comillas dobles para HTML

es decir

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

Usar comillas simples para JavaScript

es decir

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

He tenido un problema al usar Bootstrap donde el uso de comillas dobles sí importaba en comparación con el uso de comillas simples (que no funcionó) class = 'row-fluid' me dio problemas al hacer que el último tramo cayera por debajo de los otros tramos en lugar de sentarse muy bien al lado a la derecha, mientras que class = "row-fluid" funcionó.

MikeP
fuente
1

si está escribiendo asp.net, ocasionalmente debe usar comillas dobles en las declaraciones de Eval y comillas simples para delimitar los valores, esto es principalmente para que el código en línea de C # sepa que está usando una cadena en el contenedor de evaluación en lugar de un carácter. Personalmente, solo usaría uno u otro como estándar y no los mezclaría, parece desordenado, eso es todo.

Mauro
fuente
1

Usando "en lugar de 'cuando:

<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 'en lugar de "cuando:

<input value='"User"'/> //Need to use double quote
var html = "<input name='username'/>" //When assigning html content to a javascript variable
a1204773
fuente
3
En su caso de "asignar contenido html variable js", generalmente prefiero hacer lo contrario: var html = '<input name="username" />';y mantener la coherencia con el resto de html :)
Erenor Paz
1

El html no hace ninguna diferencia, pero si está generando html dinámicamente con otro lenguaje de programación, entonces una forma puede ser más fácil que otra.

Por ejemplo, en Java, la comilla doble se usa para indicar el inicio y el final de una Cadena, por lo que si desea incluir una comilla doble dentro de la Cadena, debe escapar con una barra invertida.

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

No tiene ese problema con la comilla simple, por lo tanto, el uso de la comilla simple hace que el código sea más legible en Java.

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

Especialmente si tiene que escribir elementos html con muchos atributos (tenga en cuenta que generalmente uso una biblioteca como jhtml para escribir html en Java, pero no siempre es práctico hacerlo)

Paul Taylor
fuente
Hice dos pasantías en servlets. Estaba analizando mi código y solo ahora comencé a darme cuenta de la realidad en comillas dobles, comillas simples y concatenaciones de cadenas. El sitio web que solía estudiar utilizaba comillas dobles en html y comillas simples en java. Ni siquiera me di cuenta. Me alegro de que finalmente lo tengo ...
Michael
0

Soy novato aquí, pero uso comillas simples solo cuando uso comillas dobles dentro de la primera. Si no estoy claro, te muestro tu ejemplo:

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

Espero haberte ayudado.

Marcin C
fuente
-5

En PHP, usar comillas dobles causa una ligera disminución en el rendimiento porque se evalúan los nombres de las variables, por lo que en la práctica, siempre uso comillas simples al escribir código:

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

Entonces puedes escribir esto en su lugar;

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

Creo que Javascript funciona de manera similar, por lo que una mejora muy pequeña en el rendimiento, si eso es importante para usted.


Además, si miras hasta la especificación HTML 2.0, todas las etiquetas enumeradas aquí;

W3 HTML DTD Referencia

(Use comillas dobles). La consistencia es importante sin importar cuál tiende a usar con más frecuencia.

Raiden
fuente
13
JavaScript no evalúa nombres de variables en cadenas. No hay diferencia entre 'y "en JavaScript.
John Mellor
-9

Las comillas dobles se usan para cadenas (es decir, "esta es una cadena") y las comillas simples se usan para un carácter (es decir, 'a', 'b' o 'c'). Dependiendo del lenguaje de programación y el contexto, puede usar comillas dobles para un carácter pero no comillas simples para una cadena.

Al HTML no le importa cuál usas. Sin embargo, si está escribiendo HTML dentro de un script PHP, debe seguir las comillas dobles, ya que necesitará escapar de ellas (es decir, \ "lo que sea") para evitar confundirse con PHP.

CD Reimer
fuente
Conozco bastantes lenguajes de programación, pero uno donde esto es cierto.
mikl
1
@mikl práctica general en C # y Java es cadenas en comillas dobles y caracteres en comillas simples. Pero eso no da validación para esta respuesta. A menos que esta sea la respuesta a una pregunta diferente.
Evorlor