ずいぶん前の記事だけど… (via. マイコミジャーナル)

JavaScript文字列処理は "+=" が十分高速、Safariもベター
 と
"+=" でも不十分、IEで性能発揮するには文字列サイズにも工夫必要

(1) IEでもIE6以上であれば "+=" を使うこと
(2) ただし処理する文字列が64KBを越える場合には配列を使うこと
(3) 大きなサイズの文字列の処理はなるたけ避けできるだけ小さい文字列操作を先に実行するように工夫すること
などをテクニックとして紹介している。

工工エエエエ(´Д`)エエエエ工工
そーなのー?

「文字列を連結するときは、配列にして連結すべし!」 というのを昔どっかで読んだ。
どこだったっけかなー…
↓ だったかなー?
JavaScript の要素追加・変更で innetHTML と DOM の速度検証 (Drk7.jp)
他にも本で読んだ気もする。
思いっきりソレを鵜呑みにしていたんだけど、どうやら違うということか。

配列を使った文字の連結の例

var arrHOGE = new Array(); // 文字を入れる配列
arrHOGE.push('明日は'); // 配列に
arrHOGE.push('きっと'); //  収めて
arrHOGE.push('晴れる'); //   いくよ

var strFUGA = arrHOGE.join(''); // 配列の中身を連結

alert(strFUGA); // 「明日はきっと晴れる」 のダイアログ

"+=" での文字の連結の例

var strHOGE = new String(); // 文字を入れる変数
strHOGE += '明日は'; // 連結
strHOGE += 'きっと'; //  して
strHOGE += '晴れる'; //   いくよ

alert(strHOGE); // 「明日はきっと晴れる」 のダイアログ

書き方は色々あると思うけど、"+=" の方が見易いのは明らか。
配列を使った方は 「手を掛けました!」 感、というか 「玄人はこう書く!」 感というか、スゴイ事をしているように見えるけど、今回のマイコミの記事によると「無駄」という事になる。

昔は、"+=" の処理が遅かったのかもしれないね。
そのために、回避策として配列を用いるテクニック / ハックが生まれたと。
最近のブラウザの JavaScript 実行エンジンは切磋琢磨して、ブラウザのバージョンが上がるごとに高速化が図られてるから、その欠点も克服されたのだろう。
ということで今後は "+=" って書きましょうかねー。
(ちなみに、64KB は 64000文字くらい。日本語の文字は2バイト文字なので、32000文字くらい。)

しかしながら、この文字連結もそうだけど、従来のテクニックが必要なくなるタイミングが JavaScript のバージョン (?) アップではなく、「ブラウザ依存」 というのは問題だ。
普通 (?)、プログラミング言語のバージョンが上がる時にはプログラマ皆さんが 「いっせーのーせ!」 でコードの書き方を変える、或いはその意識付けをするタイミングが存在する。
ブラウザ依存となるとブラウザの乱立は相変わらずだし、各ブラウザのバージョンの上がり方はバラバラ。
プログラマの皆さんは 「もやー」 っと移行するか、ブラウザの動向を完璧にウォッチし続けることを強いられるワケだ。
DOM やら ECMA やら、統一や標準化という働きはウソですか?

イヤイヤ、技術職には常に最新情報を取り入れるアンテナの広さが必要、って意見も分かるよ。
ただねー;… なんかねー…
大変じゃん

…アレ?
プログラミングの話じゃなくて、ただの愚痴だわ。
ヽ(*´∀`)ノ ワハー

JavaScriptで学ぶ関数型プログラミング
JavaScriptで学ぶ関数型プログラミング


ブログネタ
JavaScript に参加中!