我知道你可以在Javascript中连接这样的字符串:
str1 + str2;
或者像这样:
[str1, str2].join('');
为什么还有这样的功能呢?
str1.concat(str2)
是否更快?看起来更像是打字给我。我猜这是在str1 + str2
优化之前使用的。这是对的吗?
答案 0 :(得分:4)
答案 1 :(得分:2)
似乎存在显着的性能差异,尤其是对于IE:
http://www.sitepen.com/blog/2008/05/09/string-performance-an-analysis/
答案 2 :(得分:2)
String.prototype.concat
方法非常通用(ECMA Standard 5.1 Edition / June 2011,第143-144页):
- 调用CheckObjectCoercible,将 this 值作为参数传递。
- 让 S 成为调用 ToString 的结果,并将 this 值作为其参数。
- 让 args 成为内部列表,它是传递给此函数的参数列表的副本。
- 让 R 成为 S 。
重复,而 args 不为空
一个。从 args 中删除第一个元素,然后让 next 成为该元素的值。
湾设 R 为字符串值,包含前一个值 R 中的字符,后跟 ToString的字符( next )。
- 返回 R 。
醇>
因为它非常通用,所以几乎每个具有ToString()
方法的对象都可以使用它。另见以下注释:
注意:强> concat函数是故意通用的;它不要求此值为String对象。因此,它可以转移到其他类型的对象以用作方法。
所以你可以使用String.prototype.concat.call(myObject,....);
。请注意,还有一个Array.prototype.concat
方法,它也非常通用(第125页)。
答案 3 :(得分:-1)
它不会比运算符过载更快或更慢。