Considere las siguientes dos alternativas:
console.log("double");
console.log('single');
El primero usa comillas dobles alrededor de la cadena, mientras que el segundo usa comillas simples alrededor de la cadena.
Veo más y más bibliotecas de JavaScript que usan comillas simples al manejar cadenas.
¿Son estos dos usos intercambiables? Si no, ¿hay alguna ventaja en usar uno sobre el otro?
Si está tratando con JSON, debe tener en cuenta que, estrictamente hablando, las cadenas JSON deben estar entre comillas dobles. Claro, muchas bibliotecas también admiten comillas simples, pero tuve grandes problemas en uno de mis proyectos antes de darme cuenta de que las comillas simples de una cadena, de hecho, no están de acuerdo con los estándares JSON.
-
Esto es muy relevante cuando se trabaja con jQuery.ajax llamando a un servicio ASP.NET (servicio web, método de página o MVC).
– Schmuli
3 de marzo de 2011 a las 11:46
-
Los nombres de propiedad dentro las cadenas JSON deben estar entre comillas dobles, pero una cadena JSON en su conjunto puede estar entre comillas simples:
var jsonString = '{"key1":"value1"}';
(No es que recomiende compilar JSON manualmente).– nnnnnn
9 de febrero de 2012 a las 10:45
-
No deberías escribir JSON a mano si puedes
.stringify()
eso.– Camilo Martín
3 de febrero de 2013 a las 2:09
-
Este de aquí es el mejor argumento para usar siempre comillas dobles. JSON debe tener comillas dobles. Las otras respuestas en su mayoría dan el consejo de “ser consistente”, lo que significa que si alguna parte del idioma puede forzar de manera realista una comilla doble, debe usar esa comilla doble de manera consistente.
– Josh de Qaribú
14 de julio de 2014 a las 16:07
-
Esto también es relevante cuando se trabaja con varios idiomas donde casi todos los demás idiomas (Java, C, C++, …) usan comillas dobles para cadenas y comillas simples para caracteres. Prefiero usar las mismas citas en todos los ámbitos y, por lo tanto, me quedo con comillas dobles para JS. Con años de escribir al tacto, la tecla adicional para cambiar entre comillas dobles es completamente irrelevante, y si su codificación está limitada por su escritura, entonces necesita practicar escribir correctamente.
– Lawrence Dol
24/09/2014 a las 17:17
-
Su primer punto sobre el idioma inglés no siempre es cierto y puede cambiar según la convención de la localidad/casa. Los materiales impresos generalmente usan comillas simples para el habla y usan otro formato para grandes bloques de texto citado. Su significado ‘coloquial’ no es una definición útil de citas para enfatizar. Además, los usuarios de inglés son en general muy pobres con comillas y apóstrofes.
– John Fergusson
22 de enero de 2015 a las 13:24
-
@JohnFerguson, solo por esa razón, puede ser deseable usar comillas dobles para hacer esa diferenciación (entre apóstrofes y pasajes citados).
– usuario1429980
22 de enero de 2015 a las 17:24
-
Estoy todo sobre el pragmatismo. Debido al hecho de que 1 de cada 100 cadenas que escribo o uso tiene comillas dobles, y muchas, muchas más tienen apóstrofes, uso dobles. Sin embargo, al final del día, debe usar el tipo de cotización que 1) ya está en uso en el proyecto si es un desarrollador nuevo en el proyecto, o 2) usar el que crea que tiene más sentido.
– amigo
16 de noviembre de 2015 a las 17:43
-
Caso en cuestión: lo que acabo de escribir (hay varios apóstrofes, sin comillas dobles;)
– amigo
16 de noviembre de 2015 a las 17:44
-
Para agregar al tercer punto de @ user1429980, las comillas simples denotan un tipo de datos diferente en Java y C.
– Davina Leong
2 de agosto de 2016 a las 6:33
Comillas simples
Desearía que las comillas dobles fueran el estándar, porque tienen un poco más de sentido, pero sigo usando comillas simples porque dominan la escena.
Comillas simples:
- airbnb
- Gruñido
- Gulp.js
- Nodo.js
- npm (aunque no definido en la guía del autor)
- wikimedia
- WordPress
- Yandex
Sin preferencias:
Doble comillas:
- Mecanografiado
- douglas crockford
- D3.js (aunque no definido en
.eslintrc
) - jQuery
-
Crockford ahora prefiere las comillas dobles.
– Adam Calvet Böhl
29 de septiembre de 2016 a las 5:16
-
airbnb ahora prefiere comillas dobles
– Suraj Jain
12 de enero de 2017 a las 18:21
-
@SurajJain Ah, estas son configuraciones de verificación de estilo de código, escritas en JSON, que no permiten comillas simples en absoluto. Leerlos es una buena manera de comparar las elecciones hechas por diferentes proyectos.
– Alec Mev
13 de enero de 2017 a las 9:38
-
Google ahora prefiere las comillas simples
– Gabriel Oshiro
7 de marzo de 2019 a las 19:19
Sección 7.8.4 de la especificación describe la notación de cadenas literales. La única diferencia es que DoubleStringCharacter es “SourceCharacter pero no entre comillas dobles” y SingleStringCharacter es “SourceCharacter pero no entre comillas simples”. Entonces el solo diferencia se puede demostrar así:
'A string that\'s single quoted'
"A string that's double quoted"
Por lo tanto, depende de la cantidad de escape de cotización que desee hacer. Obviamente, lo mismo se aplica a las comillas dobles en las cadenas entre comillas dobles.
-
Crockford ahora prefiere las comillas dobles.
– Adam Calvet Böhl
29 de septiembre de 2016 a las 5:16
-
airbnb ahora prefiere comillas dobles
– Suraj Jain
12 de enero de 2017 a las 18:21
-
@SurajJain Ah, estas son configuraciones de verificación de estilo de código, escritas en JSON, que no permiten comillas simples en absoluto. Leerlos es una buena manera de comparar las elecciones hechas por diferentes proyectos.
– Alec Mev
13 de enero de 2017 a las 9:38
-
Google ahora prefiere las comillas simples
– Gabriel Oshiro
7 de marzo de 2019 a las 19:19
Me gustaría decir que la diferencia es puramente estilística, pero realmente tengo mis dudas. Considere el siguiente ejemplo:
/*
Add trim() functionality to JavaScript...
1. By extending the String prototype
2. By creating a 'stand-alone' function
This is just to demonstrate results are the same in both cases.
*/
// Extend the String prototype with a trim() method
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
};
// 'Stand-alone' trim() function
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
};
document.writeln(String.prototype.trim);
document.writeln(trim);
En Safari, Chrome, Opera e Internet Explorer (probado en explorador de Internet 7 y explorador de Internet 8), esto devolverá lo siguiente:
function () {
return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
Sin embargo, Firefox producirá un resultado ligeramente diferente:
function () {
return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
Las comillas simples han sido reemplazadas por comillas dobles. (También tenga en cuenta cómo el espacio de sangría fue reemplazado por cuatro espacios). Esto da la impresión de que al menos un navegador analiza JavaScript internamente como si todo estuviera escrito con comillas dobles. Uno podría pensar que a Firefox le lleva menos tiempo analizar JavaScript si todo ya está escrito de acuerdo con este “estándar”.
Lo cual, por cierto, me pone muy triste, ya que creo que las comillas simples se ven mucho mejor en el código. Además, en otros lenguajes de programación, generalmente son más rápidos de usar que las comillas dobles, por lo que solo tendría sentido si se aplicara lo mismo a JavaScript.
Conclusión: Creo que tenemos que investigar más sobre esto.
Esto podría explicar Resultados de la prueba de Peter-Paul Koch desde allá por 2003.
Parece que las comillas simples son a veces más rápido en Explorer Windows (aproximadamente 1/3 de mis pruebas mostraron un tiempo de respuesta más rápido), pero si Mozilla muestra alguna diferencia, maneja las comillas dobles un poco más rápido. No encontré ninguna diferencia en absoluto en Opera.
2014: Las versiones modernas de Firefox/Spidermonkey ya no hacen esto.
-
Si es un poco más rápido en un navegador hacerlo de una manera y un poco más rápido en otro hacerlo de otra manera, parece que la única guía que podemos sacar de eso es que debemos hacer lo que más nos guste porque dañará a algunos. usuarios y ayudar a otros, y es probable que la cantidad de diferencia sea imperceptible. “Optimización prematura…” y todo eso.
– Andrew Hedges
3 de mayo de 2009 a las 6:26
-
Siento que mi comentario no haya sido más constructivo. Solo digo que la forma en que el navegador elige mostrar su representación interna de la sintaxis probablemente tenga muy poco que ver con la forma en que se analiza y, por lo tanto, probablemente no sea una razón para preferir un tipo de comillas sobre el otro. Los datos de rendimiento que comparan los tiempos de análisis de comillas simples y dobles en los navegadores, por otro lado, serían más convincentes.
– Chris Caló
14 de enero de 2012 a las 5:44
-
Esta es una respuesta increíble, un descanso del resto que simplemente chirrían ‘Son iguales, son iguales’… Dijiste “Además, en otros lenguajes de programación, suelen ser más rápidos de usar que las comillas dobles”, ¿Puedo preguntar qué idiomas? He usado lenguajes regulares como Java y C#, nunca he visto otro que no sea JS que acepte cadenas literales entre comillas simples. Los recintos de comillas simples generalmente se usan solo para constantes de caracteres (solo se permite un carácter).
– ADTC
27 de noviembre de 2012 a las 7:03
-
AFAIK esto se solucionó en Firefox 17, Firefox solía hacer la descompilación al hacer
.toString
pero ahora devuelve la copia original. Firefox moderno no tendrá este problema.– Benjamin Grünbaum
13 de marzo de 2014 a las 10:14
-
No sé acerca de las diferencias de velocidad. Pero me gustaría señalar que “Esto da la impresión de que al menos un navegador analiza JavaScript internamente como si todo estuviera escrito con comillas dobles”. es una tontería No se analizó como si estuviera escrito con comillas dobles. Es decir, convirtió su representación interna (que solo almacena la cadena, no las comillas) en una versión legible por humanos, para lo cual usa un conjunto de comillas. De todos modos, esto parece haber cambiado, según el comentario de Benjamin.
– subsub
11 oct 2014 a las 8:00
¿Cuál es más fácil de leer? alerta (“Es hora de jugar”); o alert(‘Es hora de jugar’);
–Ryan Miller
9 de junio de 2011 a las 16:10
¿Qué tal este Ryan?
alert("It's \"game\" time.");
oalert('It\'s "game" time.');
?– Francisco
11/10/2011 a las 18:37
Si siempre se usan comillas simples y ocasionalmente comillas dobles donde el literal contiene comillas simples, entonces tendremos que escribir muchos menos botones de mayúsculas y nuestro dedo meñique izquierdo nos dará bendiciones. Pero sí, como dijo @arne, para JSON se deben usar comillas dobles.
– IsmailS
31 de octubre de 2011 a las 15:46
Las comillas simples son más fáciles de hacer cuando estás en un teclado europeo (las comillas dobles son Shift+2, que no es tan fácil como tocar una sola tecla convenientemente con el dedo meñique derecho).
– Arné
25/04/2012 a las 20:46
@Arne No existe tal cosa como un “teclado europeo”. Por ejemplo, el teclado alemán requiere turno para ambos tipos de cotizaciones. (Pero las comillas simples son más fáciles).
– ANeves
18 de junio de 2012 a las 15:53