226

I have some experience with Java and I know that strings concatenation with "+" operator produces new object.

I'd like to know how to do it in JS in the best way, what is the best practice for it?

Artemis
  • 4,821
  • 3
  • 21
  • 24

5 Answers5

322

MDN has the following to say about string.concat():

It is strongly recommended to use the string concatenation operators (+, +=) instead of this method for perfomance reasons

Also see the link by @Bergi.

user229044
  • 232,980
  • 40
  • 330
  • 338
laktak
  • 57,064
  • 17
  • 134
  • 164
45

In JS, "+" concatenation works by creating a new String object.

For example, with...

var s = "Hello";

...we have one object s.

Next:

s = s + " World";

Now, s is a new object.

2nd method: String.prototype.concat

Fabian Lauer
  • 8,891
  • 4
  • 26
  • 35
Ozerich
  • 2,000
  • 1
  • 18
  • 25
24

There was a time when adding strings into an array and finalising the string by using join was the fastest/best method. These days browsers have highly optimised string routines and it is recommended that + and += methods are fastest/best

Xotic750
  • 22,914
  • 8
  • 57
  • 79
12
  • We can't concatenate a string variable to an integer variable using concat() function because this function only applies to a string, not on a integer. but we can concatenate a string to a number(integer) using + operator.
  • As we know, functions are pretty slower than operators. functions needs to pass values to the predefined functions and need to gather the results of the functions. which is slower than doing operations using operators because operators performs operations in-line but, functions used to jump to appropriate memory locations... So, As mentioned in previous answers the other difference is obviously the speed of operation.

<!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>
RevanthKrishnaKumar V.
  • 1,855
  • 1
  • 21
  • 34
2

You can try with this code (Same case)

chaine1 + chaine2; 

I suggest you also (I prefer this) the string.concat method

Bergi
  • 630,263
  • 148
  • 957
  • 1,375
Aghilas Yakoub
  • 28,516
  • 5
  • 46
  • 51
  • 9
    You should rather link to English references such as https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/concat – Bergi Apr 20 '13 at 19:06
  • 15
    Given chris's and Xotic's answer: why would you prefer `concat`? – Arjan Apr 28 '13 at 18:11