console.log("double");
vs console.log('single');
Veo más y más bibliotecas de JavaScript por ahí usando comillas simples al manejar cadenas. ¿Cuáles son las razones para usar una sobre la otra? Pensé que son bastante intercambiables.
javascript
string
conventions
aemkei
fuente
fuente
alert("It's \"game\" time.");
oalert('It\'s "game" time.');
?Respuestas:
La razón más probable para el uso de single vs double en diferentes bibliotecas es la preferencia del programador y / o la consistencia API. Además de ser consistente, use el que mejor se adapte a la cuerda.
Usando el otro tipo de cita como literal:
Esto puede complicarse:
Otra opción, nueva en ES6, son los literales de plantilla que usan el
back-tick
carácter:Los literales de plantilla ofrecen una sintaxis limpia para: interpolación variable, cadenas de varias líneas y más.
Tenga en cuenta que JSON se especifica formalmente para usar comillas dobles, lo que puede valer la pena considerar dependiendo de los requisitos del sistema.
fuente
alert('It’s “game” time')
vs.alert("It’s “game” time")
- no importa. Sólo se necesitaría para escapar de los casos (raros) donde el signo primer sencillo o doble'
,"
es el más adecuado.Si se trata de JSON, debe tenerse 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 no están de acuerdo con los estándares JSON.
fuente
var jsonString = '{"key1":"value1"}';
(No es que recomiendo construir manualmente JSON.).stringify()
hacerlo.No hay una mejor solución ; Sin embargo, me gustaría argumentar que las comillas dobles pueden ser más deseables a veces:
"
para identificar un pasaje del texto citado. Si tuviéramos que usar una cita simple'
, el lector podría malinterpretarla como una contracción. El otro significado de un pasaje de texto rodeado por el'
indica el significado 'coloquial'. Tiene sentido ser coherente con los lenguajes preexistentes, y esto puede facilitar el aprendizaje y la interpretación del código."I'm going to the mall"
, frente a la versión escapado de otro modo:'I\'m going to the mall'
.Las comillas dobles significan una cadena en muchos otros idiomas . Cuando aprende un nuevo lenguaje como Java o C, siempre se utilizan comillas dobles. En Ruby, PHP y Perl, las cadenas entre comillas simples no implican escapes de barra invertida, mientras que las comillas dobles las admiten.
La notación JSON se escribe con comillas dobles.
Sin embargo, como han dicho otros, es muy importante permanecer consistente.
fuente
La sección 7.8.4 de la especificación describe la notación de cadena literal. La única diferencia es que DoubleStringCharacter es "SourceCharacter pero no entre comillas dobles" y SingleStringCharacter es "SourceCharacter pero no entre comillas simples". Entonces, la única diferencia se puede demostrar así:
Por lo tanto, depende de la cantidad de presupuesto que quiera hacer. Obviamente, lo mismo se aplica a las comillas dobles en cadenas de comillas dobles.
fuente
"{\"name\": \"Peter\"}"
vs'{"name": "Peter"}'
? Es cierto que podría decir que esta es la misma diferencia, pero ciertamente afectaría su decisión de una manera diferente al ejemplo anterior.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:
Sin preferencias:
Doble comillas:
.eslintrc
)fuente
Me gustaría decir que la diferencia es puramente estilística, pero realmente tengo mis dudas. Considere el siguiente ejemplo:
En Safari, Chrome, Opera e Internet Explorer (probado en IE7 e IE8), esto devolverá lo siguiente:
Sin embargo, Firefox producirá un resultado ligeramente diferente:
Las comillas simples han sido reemplazadas por comillas dobles. (Observe también cómo se reemplazó el espacio de sangría por cuatro espacios). Esto da la impresión de que al menos un navegador analiza JavaScript internamente como si todo se hubiera escrito entre comillas dobles. Uno podría pensar, Firefox tarda menos tiempo en analizar JavaScript si todo ya está escrito de acuerdo con este 'estándar'.
Lo cual, por cierto, me hace un panda 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 lo mismo se aplica a JavaScript.
Conclusión: creo que debemos investigar más sobre esto.
Editar: Esto podría explicar los resultados de las pruebas de Peter-Paul Koch de 2003.
Edición 2014: las versiones modernas de Firefox / Spidermonkey ya no hacen esto.
fuente
.toString
pero ahora devuelve la copia original. Firefox moderno no tendrá este problema.Si está haciendo JavaScript en línea (posiblemente algo "malo", pero evitando esa discusión) solo comillas son su única opción para los literales de cadena, creo.
Por ejemplo, esto funciona bien:
Pero no puede incluir el "hola" entre comillas dobles, a través de cualquier método de escape que conozca. Incluso
"
lo que habría sido mi mejor suposición (ya que estás escapando de las comillas en un valor de atributo de HTML) no funciona para mí en Firefox.\"
tampoco funcionará porque en este punto estás escapando por HTML, no por JavaScript.Entonces, si el nombre del juego es coherente, y vas a hacer un JavaScript en línea en partes de tu aplicación, creo que las comillas simples son las ganadoras. Sin embargo, que alguien me corrija si me equivoco.
fuente
<a onclick="alert(%22hi%22);">hi</a>
, desde la memoria esto funciona, aunque puede haber estado en el atributo href en su lugar<a href="javascript:alert(%22hi%22);">hi</a>
alert("hi")
no es válido JavaScript. Pero los valores de los atributos están codificados. w3.org/TR/html4/intro/sgmltut.html#didx-attribute"
es la forma correcta de escapar de una comilla doble dentro de un atributo HTML. Funciona bien en Firefox. @Denilson, XML (y por lo tanto XHTML) permite comillas simples y dobles. Vea elAttValue
literal en la especificación XML en w3.org/TR/REC-xml/#d0e888 .Técnicamente no hay diferencia, solo es cuestión de estilo y convención.
Douglas Crockford recomienda el uso de comillas simples para cadenas internas y comillas dobles para externas (por externo nos referimos a las que se mostrarán al usuario de la aplicación, como mensajes o alertas).
Yo personalmente sigo eso.
ACTUALIZACIÓN: Parece que el Sr. Crockford cambió de opinión y ahora recomienda usar comillas dobles en todo :)
fuente
Estrictamente hablando, no hay diferencia en el significado; así que la elección se reduce a la conveniencia.
Aquí hay varios factores que podrían influir en su elección:
fuente
'
está00100111
en binario, mientras que"
está00100010
en binario. Por lo tanto, las comillas dobles requieren la mitad de energía para almacenar que las comillas simples. Esa es la diferencia allí mismo.Veamos qué hace una referencia.
Dentro de jquery.js, cada cadena está entre comillas dobles.
Entonces, a partir de ahora, usaré cadenas entre comillas dobles. (¡Estaba usando single!)
fuente
Solo mantén la consistencia en lo que usas. Pero no decepciones tu nivel de comodidad.
Actualización ES6
Usando la sintaxis literal de la plantilla .
fuente
Es sobre todo una cuestión de estilo y preferencia. Hay algunas exploraciones técnicas bastante interesantes y útiles en las otras respuestas, por lo que quizás lo único que podría agregar es ofrecer un pequeño consejo mundano.
Si estás de codificación en una empresa o equipo, a continuación, que es probablemente una buena idea para seguir el "estilo de la casa".
Si estás solo hackeando algunos proyectos paralelos, entonces mira a algunos líderes prominentes en la comunidad. Por ejemplo, digamos que te estás metiendo en Node.js. Eche un vistazo a los módulos principales, por ejemplo, underscore.js o express y vea qué convención usan, y considere seguir eso.
Si ambas convenciones se usan por igual, entonces difiera a su
preferencia personal .
Si usted no tiene ninguna preferencia personal, a continuación, lanza una moneda.
Si no tienes una moneda, entonces la cerveza está sobre mí;)
fuente
Espero no agregar algo obvio, pero he estado luchando con Django y Ajax y JSON en esto.
Suponiendo que en su código HTML use comillas dobles, como normalmente debería ser, sugiero usar comillas simples para el resto en JavaScript.
Así que estoy de acuerdo con @ady pero con algo de cuidado.
Mi conclusión es: en JavaScript, probablemente no importa, pero tan pronto como lo incrustas dentro de HTML o similar, empiezas a tener problemas. Debes saber lo que realmente está escapando, leyendo, pasando tu cadena.
Mi caso simple fue:
Puede detectar el \ 'en el tercer campo de showThis.
¡La cita doble no funcionó!
Está claro por qué, pero también está claro por qué debemos pegarnos entre comillas simples ... Supongo ...
Este caso es una incrustación HTML muy simple, el error fue generado por una simple copia / pegado de un código JavaScript 'doble comilla'.
Entonces para responder la pregunta:
Trate de usar comillas simples dentro de HTML. Podría ahorrar un par de problemas de depuración ...
fuente
No estoy seguro de si esto es relevante en el mundo de hoy, pero las comillas dobles solían usarse para contenido que necesitaba procesar caracteres de control y comillas simples para cadenas que no lo tenían.
El compilador ejecutará la manipulación de cadenas en una cadena con comillas dobles mientras deja una cadena entre comillas literalmente intacta. Esto solía llevar a los desarrolladores 'buenos' a elegir el uso de comillas simples para cadenas que no contenían caracteres de control como
\n
o\0
(no procesados dentro de comillas simples) y comillas dobles cuando necesitaban analizar la cadena (a un bajo costo en ciclos de CPU para procesamiento de la cadena).fuente
Si está utilizando jshint , generará un error si utiliza una cadena de comillas dobles.
Lo utilicé a través del soporte de Yeoman de AngularJS, pero tal vez haya alguna forma de configurar esto.
Por cierto, cuando manejas HTML en JavaScript, es más fácil usar comillas simples:
Y al menos JSON está usando comillas dobles para representar cadenas.
No hay una forma trivial de responder a su pregunta.
fuente
Hablando de rendimiento, las citas nunca serán su cuello de botella, sin embargo, el rendimiento es el mismo en ambos casos.
Hablando de la velocidad de codificación, si usa
'
para delimitar una cadena, deberá escapar de las"
comillas. Es más probable que necesite usar"
dentro de la cadena, por ejemplo:Entonces, prefiero usar
'
para delimitar la cadena, por lo que tengo que escapar menos caracteres.fuente
Una razón (tonta) para usar comillas simples sería que no requieren que presione la tecla Mayús para escribirlas, mientras que una comilla doble sí. (Supongo que la cadena promedio no requiere escapar, lo cual es una suposición razonable). Ahora, supongamos que cada día codifico 200 líneas de código. Quizás en esas 200 líneas tengo 30 citas. Quizás escribir una comilla doble toma 0.1 segundos más de tiempo que escribir una comilla simple (porque tengo que presionar la tecla Mayús). Luego, en cualquier día, pierdo 3 segundos. Si codifico de esta manera durante 200 días al año durante 40 años, entonces he perdido 6.7 horas de mi vida. Comida para el pensamiento.
fuente
var description = "This is a \"quick\" test";
en un teclado en inglés. Para un teclado en inglés, su dedo meñique debe moverse de la tecla de mayúsculas izquierda hacia la tecla Q en la fila superior en lugar de moverse de la tecla A a la tecla Q. En otras palabras, debe viajar el doble de distancia No estoy seguro de dónde están las teclas en el teclado alemán, pero estoy seguro de que hay un ejemplo análogo.A favor de comillas simples
Además, el HTML en línea es normalmente un antipatrón. Prefiero plantillas.
De nuevo, no debería tener que construir JSON de esta manera. JSON.stringify () suele ser suficiente. Si no, use plantillas.
A favor de comillas dobles
A favor de ambos
No hay diferencia entre los dos en JavaScript. Por lo tanto, puede usar lo que sea conveniente en este momento. Por ejemplo, los siguientes literales de cadena producen la misma cadena:
Comillas simples para cadenas internas y dobles para externas. Eso le permite distinguir las constantes internas de las cadenas que se mostrarán al usuario (o se escribirán en el disco, etc.). Obviamente, debe evitar poner el último en su código, pero eso no siempre se puede hacer.
fuente
Una cosa más que quizás desee considerar como una razón para el cambio de comillas dobles a comillas simples es el aumento de la popularidad de los scripts del lado del servidor. Al usar PHP, puede pasar variables y analizar funciones de JavaScript usando cadenas y variables en PHP.
Si escribe una cadena y usa comillas dobles para su PHP, no tendrá que escapar de ninguna de las comillas simples y PHP recuperará automáticamente el valor de las variables por usted.
Ejemplo: necesito ejecutar una función javascript usando una variable de mi servidor.
Esto me ahorra mucha molestia al tener que lidiar con unir cadenas, y puedo llamar efectivamente a un javascript desde PHP. Este es solo un ejemplo, pero esta puede ser una de varias razones por las cuales los programadores están predeterminados a comillas simples en javascript.
Cita de documentos PHP : "La característica más importante de las cadenas entre comillas dobles es el hecho de que los nombres de las variables se expandirán. Consulte el análisis de cadenas para obtener más detalles".
fuente
Hay personas que afirman ver diferencias de rendimiento: hilo antiguo de la lista de correo . Pero no pude encontrar ninguno de ellos para confirmar.
Lo principal es ver qué tipo de comillas (doble o simple) está utilizando dentro de su cadena. Ayuda a mantener baja la cantidad de escapes. Por ejemplo, cuando trabaja con html dentro de sus cadenas, es más fácil usar comillas simples para que no tenga que escapar de todas las comillas dobles alrededor de los atributos.
fuente
Usaría comillas dobles cuando no se pueden usar comillas simples y viceversa:
En vez de:
fuente
No hay diferencia entre comillas simples y dobles en JavaScript.
La especificación es importante:
Quizás haya diferencias de rendimiento, pero son absolutamente mínimas y pueden cambiar todos los días según la implementación de los navegadores. La discusión adicional es inútil a menos que su aplicación de JavaScript tenga cientos de miles de extensión.
Es como un punto de referencia si
es más rápido que
(espacios extra)
hoy, en un navegador y plataforma en particular, etc.
fuente
Cuando uso CoffeeScript, uso comillas dobles. Estoy de acuerdo en que debe elegir cualquiera de ellos y atenerse a él. CoffeeScript le ofrece interpolación cuando usa comillas dobles.
ES6 está utilizando ticks de retroceso (`) para cadenas de plantillas. Lo que probablemente tiene una buena razón, pero al codificar puede ser engorroso cambiar el carácter de los literales de cadena de comillas o comillas dobles a ticks de retroceso para obtener la función de interpolación. Puede que CoffeeScript no sea perfecto, pero usar el mismo carácter de cadena literal en todas partes (comillas dobles) y poder interpolar siempre es una buena característica.
fuente
Si está retrocediendo entre JavaScript y C #, es mejor entrenar sus dedos para la convención común que es comillas dobles.
fuente
He estado ejecutando lo siguiente unas 20 veces. Y parece que las comillas dobles son aproximadamente un 20% más rápidas.
La parte divertida es que, si cambia la parte 2 y la parte 1, las comillas simples son aproximadamente un 20% más rápidas.
fuente
var dummy_date = new Date()
al comienzoNo hay estrictamente ninguna diferencia, por lo que es principalmente una cuestión de gusto y de lo que está en la cadena (o si el código JS en sí está en una cadena), para mantener baja la cantidad de escapes.
La leyenda de la diferencia de velocidad podría provenir del mundo PHP, donde las dos citas tienen un comportamiento diferente.
fuente
Después de leer todas las respuestas que dicen que puede ser más rápido o tener ventajas, diría que las comillas dobles son mejores o más rápidas porque el compilador de cierre de Google convierte las comillas simples en comillas dobles.
fuente
Ahora que es 2020, deberíamos considerar una tercera opción para Javascript: la única opción para todo.
Esto se puede usar en todas partes en lugar de comillas simples o dobles.
¡Te permite hacer todas las cosas!
Permite múltiples líneas: `
Esta
Hace
Javascript
¡Mejor!
``
Tampoco causa ninguna pérdida de rendimiento al reemplazar los otros dos: https://medium.com/javascript-in-plain-english/are-backticks-slower-than-other-strings-in-javascript-ce4abf9b9fa
fuente
Si su fuente JS es:
La fuente HTML será:
o para HTML5
JS permite matrices como esa:
Pero si lo cadenas, será por razones compatibles:
Estoy seguro de que esto lleva algo de tiempo.
fuente
Solo para agregar mis 2 centavos: Al trabajar con JS y PHP hace unos años, me he acostumbrado a usar comillas simples para poder escribir el carácter de escape ('\') sin tener que escapar también. Usualmente lo usaba cuando escribía cadenas crudas con rutas de archivos, etc. ( http://en.wikipedia.org/wiki/String_literal#Raw_strings )
De todos modos, mi convención terminó convirtiéndose en el uso de comillas simples en cadenas sin procesar de tipo identificador, como
if (typeof s == 'string') ...
(en las que nunca se usarían caracteres de escape, nunca), y comillas dobles para textos , como "Hey, ¿qué pasa?". También uso comillas simples en los comentarios como una convención tipográfica para mostrar los nombres de los identificadores. Esto es solo una regla general, y me separo solo cuando es necesario, como al escribir cadenas HTML'<a href="#"> like so <a>'
(aunque también podría revertir las comillas aquí). También soy consciente de que, en el caso de JSON, se usan comillas dobles para los nombres, pero aparte de eso, personalmente, prefiero las comillas simples cuando nunca se requiere escapar para el texto entre las comillas, comodocument.createElement('div')
.En pocas palabras, y como algunos han mencionado / aludido, elija una convención, cumpla con ella y solo se desvíe cuando sea necesario.
fuente