226 votes

Chaînes JS "+" vs méthode concat

J'ai une certaine expérience de Java et je sais que la concaténation de chaînes de caractères avec l'opérateur "+" produit un nouvel objet.

J'aimerais savoir comment le faire en JS de la meilleure façon, quelle est la meilleure pratique pour cela ?

322voto

hcris Points 9359

Voici ce que dit MDN à propos de string.concat() :

Il est fortement recommandé d'utiliser les opérateurs de concaténation de chaînes de caractères (+, +=) au lieu de cette méthode pour des raisons de performances.

Voir aussi le lien par @Bergi.

45voto

Ozerich Points 1970

En JS, la concaténation "+" fonctionne en créant un nouveau String objet.

Par exemple, avec...

var s = "Hello";

...nous avons un objet s .

Suivant :

s = s + " World";

Maintenant, s est un nouvel objet.

2ème méthode : String.prototype.concat

24voto

Xotic750 Points 6649

Il fut un temps où l'ajout de chaînes dans un tableau et la finalisation de la chaîne par l'utilisation de join était la méthode la plus rapide/la meilleure. De nos jours, les navigateurs ont des routines de chaînes de caractères hautement optimisées et il est recommandé que + y += les méthodes sont les plus rapides/les meilleures

12voto

  • Nous ne pouvons pas concaténer une variable de type chaîne à une variable de type entier en utilisant concat() car cette fonction ne s'applique qu'à une chaîne de caractères, pas à un nombre entier. Mais nous pouvons concaténer une chaîne de caractères à un nombre (entier) en utilisant l'opérateur +.
  • Comme nous le savons, les fonctions sont plutôt plus lentes que les opérateurs. Les fonctions ont besoin de passer des valeurs aux fonctions prédéfinies et ont besoin de rassembler les résultats des fonctions. ce qui est plus lent que de faire des opérations en utilisant les opérateurs parce que les opérateurs effectuent des opérations en ligne mais, les fonctions ont l'habitude de sauter aux emplacements de mémoire appropriés... Donc, comme mentionné dans les réponses précédentes l'autre différence est évidemment la vitesse d'opération.

    <!DOCTYPE html> <html> <body>

    <p>The concat() method joins two or more strings</p>

    <p id="demo"></p> <p id="demo1"></p>

    <script> var text1 = 4; var text2 = "World!"; document.getElementById("demo").innerHTML = text1 + text2; //Below Line can't produce result document.getElementById("demo1").innerHTML = text1.concat(text2); </script> <p><strong>The Concat() method can't concatenate a string with a integer </strong></p> </body> </html>

2voto

Aghilas Yakoub Points 16682

Vous pouvez essayer avec ce code (même cas)

chaine1 + chaine2; 

Je vous suggère également (je préfère cela) le méthode string.concat

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