JavaScript拼接字符串3种方法
原文:3 Ways to Concatenate Strings in JavaScript
JavaScript中可以用+
运算符、Array#join()
函数和String#concat()
函数拼接字符串。本文介绍了一些需要了解的知识。
JavaScript有三种方法可以拼接字符串。本文讲解了这三种方法以及其中的差异。
+ 运算符
用于两个数值加和的运算符+
,也能用于拼接两个字符串。
1 | const str = 'Hello' + ' ' + 'World'; |
也可以用+=
,a += b
相当于a = a + b
的简写。
1 | let str = 'Hello'; |
如果运算符+
左侧是字符串,JavaScript会将右侧的强制转换为字符串。也就是说字符串拼接对象、数值、null
或undefined
都是没问题的。
1 | let str = 'Values: '; |
运算符+
和+=
在现代的JavaScript引擎中是很快的,不必担心类似Java的StringBuilder类的问题。
Array#join()
Array#join()
函数将数组中所有元素拼接起来,生成一个新字符串,例如:
1 | ['Hello', ' ', 'World'].join(''); // 'Hello World' |
join()
的第一个参数是分隔符,默认的分隔符是逗号','
。
1 | ['a', 'b', 'c'].join(); // 'a,b,c' |
可以使用任何字符作为分隔符。分隔符的存在,让Array#join()在重复拼接相同字符时更方便,例如,用空格' '
组为分隔符拼接单词数组:
1 | // 'Twas the night before Christmas' |
也可以使用'/'
拼接URL片段:
1 | // 'masteringjs.io/tutorials/fundamentals/string-concat' |
Array#join()
的操作符,使得这种拼接字符串的方法非常灵活。如果需要拼接的字符串数量不确定,应该使用join()
,而不是for
循环嵌套+
。
String#concat()
JavaScript的字符串有内置的concat()
方法。concat()
函数接收一个或多个参数,返回修改的字符串。JavaScript的字符串是不可变的,所以concat()
不会修改原字符串。
1 | const str1 = 'Hello'; |
concat()
的缺点是str1
必须是字符串。如果str == null
会抛出TypeError
,但可以向concat()
传入非字符串参数。
1 | // 如果 `str` 是 null 或其他非字符串, 不能使用 `concat()` |
concat()
函数很少使用,因为它比运算符+
有更多的异常场景。例如,调用concat()
的变量恰巧是一个数组,可能会发生一些超出预期的行为。除非有充分的理由,否则应该用+
替代concat()
。
如果必须使用concat()
,最好用空字符串调用:
1 | ''.concat('Hello', ' ', 'World'); |