2

私はあなたがJavascriptでこのような文字列を連結できることを知っています:

str1 + str2;

またはこのように:

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

なぜこれを行う機能もあるのですか?

str1.concat(str2)

もっと速いですか?私にはもっとタイピングしているように思えます。私の推測では、これはstr1 + str2最適化される前に使用されていたと思います。それは正しいでしょうか?

4

4 に答える 4

4

もっと速いですか?

それどころか、かなり遅くなる可能性があるようです。

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

于 2012-04-20T17:57:59.040 に答える
2

特にIEの場合、パフォーマンスに大きな違いがあるようです。

http://www.sitepen.com/blog/2008/05/09/string-performance-an-analysis/

于 2012-04-20T17:55:11.390 に答える
2

このString.prototype.concat方法は非常に一般的です(ECMA Standard 5.1 Edition / 2011年6月、pp.143-144):

  1. この値を引数として渡してCheckObjectCoercibleを呼び出します。
  2. SをToStringを呼び出した結果と、引数としてこの値を指定します。
  3. argsを、この関数に渡される引数リストのコピーである内部リストとします。
  4. RをSとします
  5. argsが空でない間、繰り返します

    a。argsから最初の要素を削除し、nextその要素の値とします。

    b。Rを、 Rの前の値の文字とそれに続くToStringnext )の文字で構成される文字列値とします。

  6. Rを返します。

ToString()非常に汎用的であるため、メソッドを持つほとんどすべてのオブジェクトで使用できます。次の注も参照してください。

注: concat関数は意図的に汎用的です。この値がStringオブジェクトである必要はありません。したがって、メソッドとして使用するために他の種類のオブジェクトに転送できます。

したがって、を使用できますString.prototype.concat.call(myObject,....);Array.prototype.concat非常に一般的なメソッド(p。125)もあることに注意してください。

于 2012-04-20T18:11:15.313 に答える
-1

演算子のオーバーロードよりも速くなったり遅くなったりすることはありません。

于 2012-04-20T17:54:07.810 に答える