使用传播参数连接字符串的最有效方法

Ank*_*oni 0 javascript string-concatenation ecmascript-6

我正在尝试找到一种更好的方法来连接JavaScript ES6中的字符串。以下是当前代码段。

方法1:

function concat(...strings){
    return ''.concat(...strings);
}
Run Code Online (Sandbox Code Playgroud)

方法2:

function concat(...strings){
    return strings.join('');
}
Run Code Online (Sandbox Code Playgroud)

例:

concat("Hey", "There", "How", "Are", "You"); // output is "HeyThereHowAreYou"
Run Code Online (Sandbox Code Playgroud)

我不确定这些方法的性能,因为参数数量可能会增加。任何评论将不胜感激,这可能是最好的,或者任何其他方法都可以提供帮助。

Ana*_*ain 5

字符串连接可以通过多种方式完成

  • 加号(+)运算符。一旦运算符之一是字符串,+运算符就会进行字符串连接。然后,另一个操作数将转换为字符串。例:

    “打个招呼” + 7 +“快!” “快问好7次!”

  • 或者,您可以使用+ =其中

    a + = b

    是的缩写

    a = a + b

  • 连接字符串数组。将要连接的字符串收集在数组中,然后将其加入。

var arr = [];

 arr.push("Say hello ");

 arr.push(7);

 arr.push(" times fast");

 arr.join("")
’Say hello 7 times fast’
Run Code Online (Sandbox Code Playgroud)

哪一个更快?

字符串是不可变的,大多数以字符串为结果的字符串操作都会产生新的字符串。

因此,诸如C#或Java之类的字符串处理类似于JavaScript的语言具有帮助连接字符串的特殊类。例如,C#调用此类StringBuilder。但是,现代JavaScript引擎会在内部优化+运算符1。汤姆·舒斯特(Tom Schuster)提到“绳索2”是一种可能的优化技术。因此,不需要JavaScript中的StringBuilder。

只需使用+ =即可完成。

参考文献:

“ Re:String concatenation ” –由Brendan Eich发的电子邮件,指出+在现代JavaScript引擎上速度更快。

Hans-J着《绳索:弦乐的替代品(1995年)。Boehm,Russ Atkinson,Michael Plass。