ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptの実行効率を最適化する方法のまとめ

JavaScriptの実行効率を最適化する方法のまとめ

PHPz
PHPzオリジナル
2016-05-16 17:07:151217ブラウズ

この章では、JavaScript の実行効率を最適化するためのいくつかの方法を紹介します。私は、これが非常に優れていると感じています。興味のある方は、さらに学習してください。

1. 低バージョンのブラウザー (IE6 など)。 、IE7 など) 文字列を連結する場合、配列の join メソッドを使用する方が、数値を使用して接続するよりもはるかに効率的です (['aaa', 'bbb', 'ccc'] など)。join() は、 'aaa' 'bbb' 'ccc');

2. 配列:

ポップはシフトよりも効率的で、プッシュはシフト解除よりも効率的です。これは、バイナリ ヒープ構造を設計する場合に重要です。最大または最小の要素を配列の最後に配置するのが最善です。

3. 数値の丸めにはシフト演算を使用するのが最適です:

1 >> 0;

4. 直接量を使用して配列とオブジェクトを作成します:

var a = []; 
var o = {};

5.オブジェクト階層 ネストしすぎず、オブジェクトの検索を減らします。

e オブジェクトを取得するこの設計方法である a.b.c.d.e を使用しないでください。

6. キーと値の対応は、スイッチの場合よりも効率的です。この比較については、次の記事を参照してください。

7. jq を使用する場合、$('xxxx').empty().append('xxxxxxx'); と $('xxxxx').html('xxxxx') が比較されます。 ; 結果は次のようになります:

$('xxxx').empty().append('xxxxxxx'); 記事のアドレスは

8 です。 🎜>

JavaScript では、for(;;)、while()、for(in) の 3 種類のループを使用できます。このうち、for(in) はクエリを実行する必要があるため、非常に非効率です。可能な限り、ハッシュ キーの使用は最小限に抑える必要があります。 for(;;) と while ループのパフォーマンスは、(日常的に使用する場合には) 基本的に同等であると言えます。

ループ変数が増加または減少している場合は、ループ変数のみに値を割り当てないでください。最後に読み取られるときに、ネストされた or - 演算子を使用する必要があります。

配列の長さで比較したい場合は、事前に配列の長さ属性をローカル変数に入れておくとクエリ数が減ります。

9. ローカル変数とグローバル変数

グローバル変数は実際にはグローバル オブジェクトのメンバーであり、ローカル変数はスタック内の関数に配置されるため、グローバル変数よりも高速にアクセスされます。

10. Eval を使用しない

eval を使用すると、実行時に解釈エンジンを再度呼び出してコンテンツを実行することになり、時間がかかります。このとき、関数テンプレートは JavaScript でサポートされているクロージャを使用して実装できます (クロージャの内容については、関数型プログラミングの関連コンテンツを参照してください)。

11. 文字列接続

文字列を追加する場合は、 s = s anotherStr; の代わりに s = anotherStr 演算を使用するのが最善です。

12. 数値を文字列に変換して "" を使用します。これは、パフォーマンスの点で最も効率が高くなります。

("" +) > String() > .toString() > new String()
これは、実際には、以下の「直接量」に似ています。ユーザー操作ではなく、コンパイル時に使用できる内部操作を使用してみてください。実行時にすぐに使用されます。

String() は内部関数であるため非常に高速ですが、.toString() はプロトタイプ内の関数をクエリするため、正確なコピーを返すために new String() が使用されるほど高速ではありません。 ;

13. 浮動小数点数を整数に変換する場合、多くの人は、浮動小数点数と整数の間ではなく、parseInt() を使用します。整数の場合は、Math.floor() または Math.round() を使用する必要があります。

14. 文字列の走査操作

JavaScript 自体のループ速度が比較的遅いため、文字列のループ操作を行うには正規表現を使用する必要があります。操作は C 言語で書かれた API であり、パフォーマンスは非常に優れています。

15. タイマー

ターゲットがコードを継続的に実行している場合は、setTimeout を使用する必要はありません。使用済み 。 SetTimeout は毎回タイマーをリセットする必要があります。


上記はこの章の全内容です。その他の関連チュートリアルについては、

JavaScript ビデオ チュートリアル をご覧ください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。