最近、「JavaScript Advanced Programming」を勉強しているときに、文字列の特性についての説明がありました。原文はおおよそ次のとおりです。 ECMAScript の文字列は不変です。つまり、文字列が一度作成されると、その値は変わりません。は変更できません。変数に格納されている文字列を変更するには、まず元の文字列を破棄し、次に新しい値を含む別の文字列を変数に入力します。例:
この操作を実装するプロセスは次のとおりです。最初に 10 文字を保持できる新しい文字列を作成し、次にこの文字列に「Java」と「Script」を入力します。最後のステップでは、元の文字列「Java」を破棄します。と「Script」。これら 2 つの文字列はもう役に立たないためです。ただし、以前のバージョンのブラウザ (IE6 など) では、文字列の連結速度が非常にパフォーマンスを消費するプロセスになります。
これは Java を思い出させます。Java の文字列メカニズムは js に似ています (つまり、一度作成すると変更できず、変更したい場合にのみ元の値を破棄できます)。問題は、js に同様のメソッドがないことです。しかし、このバッファリングメカニズムをシミュレートすることはできます。原則として、結合には配列を使用します。ソースコードは次のとおりです。
varbuffer = new StringBuffer();
buffer.append("Hello ").append("javascript");
アラート(結果);
メカニズムをシミュレートしましたが、このメソッドのパフォーマンスは文字列のスプライシングとどのくらい異なりますか? テスト コードは次のとおりです。
2. 10,000 回を基準とした実行結果は上記と同様ですが、IE6 では前者の方が通話料金が高くなります。
3. 100,000 回を基準にすると、IE6 では文字列のスプライシングに明らかに時間がかかります。他のブラウザでは大きな違いはなく、一部のブラウザは StringBuffer よりも時間がかかります。
結論
2. 他のブラウザ (主に IE6) では、スプライシングの数が数万または数十万の場合、IE6 のみで StringBuffer シミュレーションを使用することをお勧めします。