2322 votes

Quand dois-je utiliser des guillemets doubles ou simples en JavaScript ?

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

Je constate que de plus en plus de bibliothèques JavaScript utilisent des guillemets simples pour traiter les chaînes de caractères. Quelles sont les raisons d'utiliser l'un plutôt que l'autre ?

Je pensais qu'ils étaient à peu près interchangeables.

132 votes

Qu'est-ce qui est le plus facile à lire ? alert("C'est l'heure du match") ; ou alert("C'est l'heure du match") ;

628 votes

Que penses-tu de ça Ryan ? alert("It's \"game\" time."); ou alert('It\'s "game" time.'); ?

39 votes

Si les guillemets simples sont toujours utilisés et occasionnellement les guillemets doubles lorsque le littéral contient des guillemets simples, alors nous devrons taper beaucoup moins de touches shift et notre petit doigt gauche nous donnera des bénédictions. Mais oui, comme @arne l'a dit, les guillemets doubles devraient être utilisés pour JSON.

1440voto

Ady Points 4132

La raison la plus probable de l'utilisation du simple ou du double dans différentes bibliothèques est la préférence du programmeur et/ou la cohérence de l'API. En dehors de la cohérence, utilisez ce qui convient le mieux à la chaîne.

Utiliser l'autre type de citation comme un littéral :

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

Cela peut devenir compliqué :

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

Une autre option, nouvelle dans ECMAScript 6, est la suivante littéraux de modèle qui utilisent le backtick caractère :

alert(`Use "double" and 'single' quotes in the same string`);
alert(`Escape the \` back-tick character and the \${ dollar-brace sequence in a string`);

Les littéraux de modèles offrent une syntaxe propre pour : l'interpolation de variables, les chaînes de caractères multi-lignes, et plus encore.

Notez que JSON est formellement spécifié pour utiliser des guillemets doubles, ce qui peut valoir la peine d'être considéré en fonction des exigences du système.

116 votes

Un point important à noter avec toutes les conventions de code - Définissez-le une fois et tenez-vous en à cette convention. Autrement dit, n'utilisez pas des guillemets doubles à un endroit et des guillemets simples ailleurs.

219 votes

@Cerebrus - Je pense que la flexibilité est de mise dans ce cas. Bien sûr, choisissez un style préféré, mais si vous avez besoin de vous éloigner de ce style pour éviter d'échapper beaucoup de guillemets dans une seule chaîne de caractères. Je suis d'accord avec cela.

14 votes

Je ne pense pas qu'il y ait de raison d'être cohérent à ce sujet. Il n'y a aucun avantage à l'un ou l'autre, et je ne pense pas que la lisibilité soit vraiment affectée par l'utilisation de ' à un endroit et de " à un autre.

694voto

Arne Points 1836

Si vous avez affaire à JSON, il convient de noter que, strictement parlant, les chaînes JSON doivent être entre guillemets. Bien sûr, de nombreuses bibliothèques prennent également en charge les guillemets simples, mais j'ai eu de gros problèmes dans l'un de mes projets avant de me rendre compte que le guillemet simple n'est pas conforme aux normes JSON.

7 votes

Ceci est très pertinent lorsque l'on travaille avec l'appel jQuery.ajax dans un service ASP.NET (Service Web, Page Method, ou MVC).

113 votes

Les noms des propriétés sur les chaînes JSON doivent être entre guillemets, mais une chaîne JSON dans son ensemble peut être entre guillemets simples : var jsonString = '{"key1":"value1"}'; (Non pas que je recommande de construire manuellement le JSON).

1 votes

J'ai également trouvé cela très pertinent lors de la création package.json pour node.js. jsonlint.com pourrait être utilisé pour valider le json.

408voto

user1429980 Points 1090

Il n'y a pas de meilleure solution Toutefois, j'aimerais faire valoir que les guillemets doubles sont parfois plus souhaitables :

  • Les nouveaux arrivants connaissent déjà les guillemets dans leur langue. . En anglais, on doit utiliser des guillemets doubles " pour identifier un passage du texte cité. Si nous devions utiliser une seule citation ' le lecteur peut l'interpréter à tort comme une contraction. L'autre sens d'un passage de texte entouré de l'élément ' indique le sens "familier". Il est logique de rester cohérent avec les langues préexistantes, et cela peut probablement faciliter l'apprentissage et l'interprétation du code.

  • Les guillemets doubles éliminent la nécessité d'échapper aux apostrophes. (comme dans les contractions). Considérons la chaîne de caractères : "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 de caractères dans de nombreuses autres langues . Lorsque vous apprenez un nouveau langage comme Java ou C, les guillemets doubles sont toujours utilisés. En Ruby, PHP et Perl, les chaînes de caractères entre guillemets simples ne permettent pas d'échapper aux barres obliques inversées, alors que les guillemets doubles le permettent.

  • La notation JSON s'écrit avec des guillemets doubles.

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

7 votes

Votre premier point concernant la langue anglaise n'est pas toujours vrai et peut changer en fonction de la localité/convention de la maison. Les documents imprimés utilisent généralement des guillemets simples pour les discours et d'autres formats pour les grands blocs de texte cité. Votre sens "familier" n'est pas une définition utile des guillemets pour l'accentuation. De plus, les utilisateurs anglais sont en général très mauvais avec les guillemets et les apostrophes.

3 votes

@JohnFerguson, pour cette seule raison, il peut être souhaitable d'utiliser des guillemets doubles afin de faire cette différenciation (entre les apostrophes et les passages cités).

1 votes

Je suis pour le pragmatisme. Étant donné qu'une chaîne de caractères sur 100 que je tape ou utilise comporte des guillemets doubles, et que beaucoup, beaucoup plus de chaînes comportent des apostrophes, j'utilise des guillemets doubles. En fin de compte, cependant, vous devriez utiliser le type de guillemets qui 1) est déjà utilisé dans le projet si vous êtes un nouveau développeur du projet, ou 2) utiliser celui qui vous semble le plus logique.

226voto

Jeremy Huiskamp Points 3103

Les guillemets doubles usent plus vite la touche shift :)

125voto

Gareth Points 42402

La section 7.8.4 du spécification décrit la notation littérale des chaînes de caractères. La seule différence est que DoubleStringCharacter est "CaractèreSource mais pas double-citation" et SingleStringCharacter est "CaractèreSource mais pas simple-citation". Ainsi, le uniquement La différence peut être démontrée de la manière suivante :

'A string that\'s single quoted'

"A string that's double quoted"

Cela dépend donc de la quantité d'échappement des guillemets que vous voulez faire. Il en va de même pour les guillemets doubles dans les chaînes de caractères entre guillemets.

0 votes

@Gareth : Je ne parlais pas des spécifications, mais de l'impact possible sur les performances. stackoverflow.com/questions/242813/

0 votes

si vous mettez suffisamment d'apostrophes dans votre code pour compenser le nombre de fois où vous devez appuyer sur shift+', alors vous vous y prenez mal.

3 votes

Qu'en est-il "{\"name\": \"Peter\"}" vs '{"name": "Peter"}' ? Certes, on pourrait dire qu'il s'agit de la même différence, mais elle affecterait certainement votre décision d'une manière différente de celle de l'exemple ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X