在Javascript中String.concat()的目的是什么?

时间:2012-04-20 17:51:31

标签: javascript string concatenation

我知道你可以在Javascript中连接这样的字符串:

str1 + str2;

或者像这样:

[str1, str2].join('');

为什么还有这样的功能呢?

str1.concat(str2)

是否更快?看起来更像是打字给我。我猜这是在str1 + str2优化之前使用的。这是对的吗?

4 个答案:

答案 0 :(得分:4)

  

是否更快?

相反,它似乎可能会明显变慢。

http://jsperf.com/concat-operator-vs-concat

答案 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页):

  
      
  1. 调用CheckObjectCoercible,将 this 值作为参数传递。
  2.   
  3. S 成为调用 ToString 的结果,并将 this 值作为其参数。
  4.   
  5. args 成为内部列表,它是传递给此函数的参数列表的副本。
  6.   
  7. R 成为 S
  8.   
  9. 重复,而 args 不为空

         

    一个。从 args 中删除第一个元素,然后让 next 成为该元素的值。

         

    湾设 R 为字符串值,包含前一个值 R 中的字符,后跟   ToString的字符( next )。

  10.   
  11. 返回 R
  12.   

因为它非常通用,所以几乎每个具有ToString()方法的对象都可以使用它。另见以下注释:

  

注意:   concat函数是故意通用的;它不要求值为String对象。因此,它可以转移到其他类型的对象以用作方法。

所以你可以使用String.prototype.concat.call(myObject,....);。请注意,还有一个Array.prototype.concat方法,它也非常通用(第125页)。

答案 3 :(得分:-1)

它不会比运算符过载更快或更慢。