Question Quand utiliser des guillemets doubles ou simples en JavaScript?


console.log("double"); contre console.log('single');

Je vois de plus en plus de bibliothèques JavaScript utilisant des guillemets simples lors de la gestion des chaînes. Quelles sont les raisons d'utiliser l'un sur l'autre? Je pensais qu'ils sont à peu près interchangeables.


1684


origine


Réponses:


La raison la plus probable de l'utilisation de single vs double dans différentes bibliothèques est la préférence du programmeur et / ou la cohérence de l'API.

Autre que d'être cohérent, utilisez celui qui convient le mieux à la chaîne :.

En utilisant l'autre type de citation comme littéral:

alert('Say "Hello"');
alert("Say 'Hello'");

... mais cela peut se compliquer ...

alert("It's \"game\" time.");
alert('It\'s "game" time.');

Une autre option, nouvelle dans ES6, est Littéraux de modèle qui utilisent le back-tick personnage:

alert(`Use "double" and 'single' quotes in the same string`);
alert(`The escape the \` back-tick character in a string`);

Les littéraux de gabarit offrent une syntaxe propre pour: l'interpolation de variables, les chaînes multilignes, etc.


1042



Si vous traitez avec JSON, il est à noter qu'à strictement parler, les chaînes JSON doivent être en double. Bien sûr, beaucoup de bibliothèques supportent aussi des guillemets simples, mais j'ai eu de gros problèmes dans un de mes projets avant de réaliser que l'insertion d'une chaîne n'est en fait pas conforme aux standards JSON.


567



Il n'y a pas de meilleure solution; cependant, je voudrais faire valoir que les guillemets peuvent être plus désirables parfois:

  • Les nouveaux arrivants seront déjà familiers avec les guillemets de leur langue. En anglais, nous devons utiliser des guillemets doubles " identifier un passage de texte cité. Si nous devions utiliser un seul devis ', le lecteur peut mal interpréter comme une contraction. L'autre sens d'un passage de texte entouré par le ' indique le sens "familier". Il est logique de rester cohérent avec les langues préexistantes, ce qui peut faciliter l'apprentissage et l'interprétation du code.
  • Les doubles guillemets éliminent le besoin d'échapper aux apostrophes (comme dans les contractions). Considérez la chaîne: "I'm going to the mall", par rapport à la version autrement échappée: 'I\'m going to the mall'.
  • Les guillemets doubles signifient une chaîne dans de nombreuses autres langues. Lorsque vous apprenez une nouvelle langue comme Java ou C, les guillemets sont toujours utilisés. Dans Ruby, PHP et Perl, les chaînes entre guillemets simples n'impliquent aucune échappement de type barre oblique inverse tandis que les guillemets doubles les supportent.

  • La notation JSON est écrite avec des guillemets doubles.

Néanmoins, comme d'autres l'ont indiqué, il est très important de rester cohérent.


244



le seulement la différence est démontrée dans ce qui suit:

'A string that\'s single quoted'

"A string that's double quoted"

Donc, ce n'est que la quantité de citation que vous voulez faire. Évidemment, il en va de même pour les guillemets doubles dans les guillemets doubles.


111



Guillemets simples

Je souhaite que les guillemets soient la norme, parce qu'ils faire un peu plus de sens, mais je continue d'utiliser des guillemets simples parce qu'ils dominent la scène.

Guillemets simples:

Pas de préférence:

Double citation:


68



Je voudrais dire que la différence est purement stylistique, mais j'ai vraiment des doutes. Considérez l'exemple suivant:

/*
   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);

Dans Safari, Chrome, Opera et Internet Explorer (testé dans IE7 et IE8), ceci retournera ce qui suit:

function () {
 return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
 return str.replace(/^\s+|\s+$/g, '');
}

Cependant, Firefox donnera un résultat légèrement différent:

function () {
    return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
    return str.replace(/^\s+|\s+$/g, "");
}

Les guillemets simples ont été remplacés par des guillemets. (Notez également que l'espace indenté a été remplacé par quatre espaces.) Cela donne l'impression qu'au moins un navigateur analyse JavaScript en interne comme si tout était écrit à l'aide de guillemets. On pourrait penser qu'il faut moins de temps à Firefox pour analyser JavaScript si tout est déjà écrit selon cette 'norme'.

Ce qui, en passant, fait de moi un panda très triste, puisque je pense que les guillemets simples semblent beaucoup plus beaux dans le code. De plus, dans d'autres langages de programmation, ils sont généralement plus rapides à utiliser que les guillemets doubles, donc cela n'aurait de sens que s'il en était de même pour JavaScript.

Conclusion: Je pense que nous devons faire plus de recherches à ce sujet.

Modifier: Cela pourrait expliquer Les résultats des tests de Peter-Paul Koch de retour en 2003.

Il semble que les guillemets simples sont parfois plus rapide dans Windows Explorer (environ 1/3 de mes tests ont montré un temps de réponse plus rapide), mais si Mozilla montre une différence, il gère les guillemets un peu plus vite. Je n'ai trouvé aucune différence dans Opera.

Modifier 2014: Les versions modernes de Firefox / Spidermonkey ne le font plus.


54



Si vous faites JavaScript en ligne (sans doute une "mauvaise" chose, mais en évitant cette discussion) unique les citations sont votre seule option pour les littéraux de chaîne, je crois.

par exemple, cela fonctionne bien:

<a onclick="alert('hi');">hi</a>

Mais vous ne pouvez pas envelopper le "salut" entre guillemets, via n'importe quelle méthode d'échappement dont je suis conscient. Même &quot; ce qui aurait été ma meilleure estimation (puisque vous évitez des citations dans une valeur d'attribut de HTML) ne fonctionne pas pour moi dans Firefox. \" ne fonctionnera pas non plus car à ce stade vous échappez pour le HTML, pas pour JavaScript.

Donc, si le nom du jeu est la cohérence, et que vous allez faire du JavaScript en ligne dans certaines parties de votre application, je pense que les guillemets simples sont les gagnants. Quelqu'un s'il vous plaît corrigez-moi si je me trompe bien.


30



Techniquement, il n'y a pas de différence, ce n'est qu'une question de style et de convention.

Douglas Crockford recommande d'utiliser des guillemets simples pour les chaînes internes et des guillemets doubles pour les externes (par externe, nous voulons dire ceux qui seront affichés à l'utilisateur de l'application, comme les messages ou les alertes).

Personnellement, je suis cela.

MISE À JOUR: Il semble que M. Crockford a changé d'avis et recommande maintenant d'utiliser des guillemets doubles tout au long :)


29



Strictement parlant, il n'y a pas de différence de sens; donc le choix se résume à la commodité.

Voici plusieurs facteurs qui pourraient influencer votre choix:

  • Style de maison: Certains groupes de développeurs utilisent déjà une convention ou l'autre.
  • Exigences côté client: utiliserez-vous des guillemets dans les chaînes? (Voir la réponse d'Ady).
  • Langage côté serveur: les utilisateurs de VB.Net peuvent choisir d'utiliser des guillemets simples pour java-script afin que les scripts puissent être construits côté serveur (VB.Net utilise des guillemets doubles pour les chaînes, donc les chaînes java-script sont faciles à distinguer s'ils utilisent des guillemets simples).
  • Code de la bibliothèque: Si vous utilisez une bibliothèque qui utilise un style particulier, vous pouvez utiliser le même style.
  • Préférence personnelle: Vous pourriez trouver l'un ou l'autre style meilleur.

23