文字列累積計算スタイルを使用する
+ 演算を使用すると、メモリ内に新しい文字列が作成され、それに連結された値が割り当てられます。結果を変数に代入するだけです。
中間変数を結果に接続することを避けるために、+= を使用して結果を直接割り当てることができます。
ゆっくり実行されるコード:
a += 'x' + 'y';
より高速に実行されるコード:
a += 'x'; a += 'y';
プリミティブ操作は関数呼び出しよりも高速になります
パフォーマンス要件が重要なループや関数の実行では、代替プリミティブの使用を検討してください。
動作が遅いコード:
var min = Math.min(a, b); arr.push(val);
より速く動作するコード:
var min = a < b ? a : b; arr[arr.length] = val;
setTimeout() と setInterval() を設定するときに文字列の代わりに関数名を渡します
In setTimeout() に文字列を渡す場合) または setInterval() を使用すると、文字列が eval 計算されるため、速度が低下します。
代わりに匿名関数ラッパーを使用して、コンパイル時に解釈して最適化できるようにします。
実行速度が遅いコード:
setInterval('doSomethingPeriodically()', 1000); setTimeOut('doSomethingAfterFiveSeconds()', 5000);
より高速に実行されるコード:
setInterval(doSomethingPeriodically, 1000); setTimeOut(doSomethingAfterFiveSeconds, 5000);
オブジェクト内で不要な DOM 参照を使用しないでください:
var car = new Object(); car.color = "red"; car.type = "sedan"
var car = { color : "red"; type : "sedan" }
C最も知識のない目標速度、スコープチェーンを最小限に抑える
非効率的な方法: var url = location.href;
var url = window.location.href;
コメントはスクリプトの実行を不必要に遅くし、ファイルサイズを増加させます。例:
推奨されない形式:
function someFunction() { var person_full_name="somename"; /* stores the full name*/ }
function someFunction() { var name="somename"; }
スコープ チェーンでは、最も遅いものは明確に識別される識別子であり、ローカル変数が最も速いことを意味します。頻繁に使用される外部変数の読み取りと書き込みが大幅に高速化されます。これは、グローバル変数やその他の詳細な識別子の検索で特に顕著です。 同様に、現在のスコープ内の変数 (var myVar) は、プロパティ (this.myVar) などのオブジェクトよりも高速にアクセスされます。
実行速度が遅いコード:
function doSomething(text) { var ps = document.getElementsByTagName('p'), text = ['foo', /* ... n ... */, 'bar']; for (var i = 0, l = ps.length; i < l; i++) { ps[i].innerHTML = text[i]; } }
function doSomethingFaster(text) { var doc = document, ps = doc.getElementsByTagName('p'), text = ['foo', /* ... n ... */, 'bar']; for (var i = 0, l = ps.length; i < l; i++) { ps[i].innerHTML = text[i]; } }
より高速なコードの実行:
function doSomethingElseFaster() { var get = document.getElementsByTagName; for (var i = 0, i < 100000; i++) { get('head'); } }
変数を使用して値をキャッシュします
次の一連の例は、ローカル変数に値を格納することの広範な影響を示しています。
例 1. 計算実行前に変数を使用してループ本体に数学関数を格納する間違った方法:
var d=35; for (var i=0; i<1000; i++) { y += Math.sin(d)*10; }
var d = 55; var math_sind = Math.sin(d)*10; for (var i=0; i<1000; i++) { y += math_sind; }
悪い処理:
配列の長さは毎回再計算されますfor (var i = 0; i < arr.length; i++) { // do something }
for (var i = 0, len = arr.length; i < len; i++) { // do something }
以上がJavaScript がコードのパフォーマンスを向上させる方法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。