JS字符串"+"vs concat方法

Art*_*mis 136 javascript

我有一些Java的经验,我知道字符串连接与"+"运算符产生新的对象.

我想知道如何以最好的方式在JS中做到这一点,它的最佳实践是什么?

lak*_*tak 195

MDN有以下说法string.concat():

出于性能原因,强烈建议使用字符串连接运算符(+,+ =)代替此方法

另请参阅@Bergi链接.

  • 您能否详细说明一下是什么使第一种方法性能更高? (2认同)

Oze*_*ich 26

在JS中,"+"连接通过创建新String对象来工作.

例如,用......

var s = "Hello";
Run Code Online (Sandbox Code Playgroud)

......我们有一个对象小号.

下一个:

s = s + " World";
Run Code Online (Sandbox Code Playgroud)

现在,s是一个新对象.

第二种方法: String.prototype.concat


Xot*_*750 12

曾经有一段时间将字符串添加到数组中并通过使用最终确定字符串join是最快/最好的方法.目前,浏览器具有高度优化的字符串例程,建议++=方法最快/最好


Rev*_* V. 8

  • 我们不能使用concat()函数将字符串变量连接到整数变量,因为此函数仅适用于字符串,而不适用于整数.但我们可以使用+运算符将字符串连接到数字(整数).
  • 我们知道,函数比运算符慢得多.函数需要将值传递给预定义函数,并需要收集函数的结果.这比使用运算符进行操作要慢,因为运算符在线执行操作,但用于跳转到适当的内存位置的函数......所以,如前面的答案中所提到的,另一个区别显然是运算速度.

<!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>
Run Code Online (Sandbox Code Playgroud)


Agh*_*oub 5

您可以尝试使用此代码(大小写相同)

chaine1 + chaine2; 
Run Code Online (Sandbox Code Playgroud)

我建议您也(我更喜欢)string.concat方法

  • 鉴于克里斯和Xotic的回答:为什么您会选择`concat`? (9认同)
  • 您应该链接到英文参考,例如https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/concat (6认同)