読者です 読者をやめる 読者になる 読者になる

「JavaScriptでconcatはもう使うべきではないのかも」なんてことはない

JavaScript

JavaScriptでconcatはもう使うべきではないのかもしれない (Kanasansoft Web Lab.)に早まるなとツッコミを入れる。

まず、当たり前ですがpushを使うべきところでconcatを使う理由はありません。配列に要素を追加したいならpushを使うのは当然ですね。
あえてconcatを使うのは配列を複製したい場合です。*1

で、複製する場合のベンチをとってみました。
http://ss-o.net/test/array_clone.html

Firefoxは配列の長さが大きくなってくるとpushのほうが高速になる傾向が見られるものの、基本的にconcatのほうが安定して高速です。なにより、配列を複製していることが明確なconcatを使わない理由はありません。

ちなみにIE8はconcatが最適化されているらしく、上記ベンチではっきりとした差が出ます。シンプルに書いておけば、こういったJavaScriptエンジン側の最適化の恩恵も得られるのは良いことですね。

Twitter / func09: String#concatの話かと思ったら違ったht ... 確かにString#concatは使わないかも… 一応、とかあるけど、使える場面は限られる…

*1:単純に配列を複製するだけならArray#sliceもあるが今回は割愛