web-dev-qa-db-fra.com

Back-tick vs guillemet simple en js

En travaillant sur node.js (côté serveur), je me demande si je devrais utiliser tous les back-ticks (`) au lieu des guillemets réguliers (" ou ') tout le temps car cela rendra le code cohérent. Y a-t-il une raison spécifique pour conserver différents types de devis pour différentes choses. Cela affectera-t-il les performances si tous les devis de non-substitution sont convertis en back-ticks?

13
hard_working_ant

le back-tick vous permet d'utiliser le modèle de chaîne par exemple:

var value = 4;
var str = `text with a ${value}`
// str will be  : 'text with a 4'

pour " contre ' Je dis regardez ce post: https://stackoverflow.com/a/9959952/6739517

En ce qui concerne les performances, il semble que ce serait la même chose si vous utilisez simplement des tiques inverses pour les chaînes simples. Cependant, lors de la création de chaînes, il semble que la concaténation soit toujours la voie à suivre. Jetez un œil ici:

Mise à jour 2018 : Il semble que le modèle de chaîne ES6 peut être plus rapide que la concaténation dans certains cas. Jetez un oeil à l'article suivant pour quelques chiffres durs:

Les littéraux de modèle ES6 sont-ils plus rapides que la concaténation de chaînes?

15
Niles Tanner

La différence de performances entre la création de chaînes à l'aide de guillemets ou de guillemets simples serait si absurdement petite que je ne pense pas que vous devriez la considérer comme une raison d'utiliser l'une ou l'autre. Voici quelques preuves de base de cela .

Cependant - je m'oppose à l'utilisation de la chaîne de modèle pour les chaînes qui ne sont pas des modèles simplement parce qu'il est clair lorsque vous utilisez des guillemets simples qu'aucun modèle ne se produira. Si je voyais une chaîne avec des crochets - je commencerais immédiatement à chasser pour voir ce qui allait être remplacé, ou pourquoi ils étaient utilisés. En revanche, les guillemets simples sont très clairs.

Je ne pense pas que cela affectera les performances - mais je ne pense pas que vous devriez le faire "juste pour être cohérent" non plus. Ce n'est pas cohérent car c'est une construction complètement différente - la même chose qu'une boucle while ou for. Ce sont différents outils pour différents emplois.

9
Shadow

Les ticks arrière (``) sont appelés littéraux de modèle . Ils font partie d'ES6. La différence est:

var name = "world";
var greetES5 = 'Hello '+name;//using single quote
var greetES6 = `Hello ${name}`;//using ticks

Vous pouvez vous référer à MDN ici pour plus d'informations.

5