ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript での使用を避けるべきいくつかの関数とステートメントを要約します。

JavaScript での使用を避けるべきいくつかの関数とステートメントを要約します。

伊谢尔伦
リリース: 2017-07-26 13:26:06
オリジナル
1326 人が閲覧しました

eval または Function コンストラクターの使用を避ける

eval または Function コンストラクターの使用は非常にコストがかかり、毎回スクリプト エンジンでソース コードを実行可能コードに変換する必要があります。
また、eval を使用して文字列を処理する場合は、実行時に解釈する必要があります。

実行速度が遅いコード:

function addMethod(object, property, code) { 
object[property] = new Function(code); 
} 
addMethod(myObj, 'methodName', 'this.localVar=foo');
ログイン後にコピー

より高速に実行されるコード:

function addMethod(object, property, func) { 
object[property] = func; 
} 
addMethod(myObj, 'methodName', function () { 'this.localVar=foo'; });
ログイン後にコピー


withの使用は避けてください
便利ではありますが、withはコンパイル時にスコープ設定されないため、追加の検索時間が必要になります。上下はありません。

ゆっくり実行されるコード:

with (test.object) { 
foo = 'Value of foo property of object'; 
bar = 'Value of bar property of object'; 
}
ログイン後にコピー

より高速に実行されるコード:

var myObj = test.object; 
myObj.foo = 'Value of foo property of object'; 
myObj.bar = 'Value of bar property of object';
ログイン後にコピー


パフォーマンス要件が重要な関数では try-catch-finally を使用しないでください

try-catch-finally in ランタイムは、ステートメントの実行時に例外を割り当てるたびに、現在のスコープに新しい変数を作成します。
例外処理は、ループの外側など、例外がそれほど頻繁に発生しないスクリプト内の高レベルで実行する必要があります。
可能であれば、try-catch-finally の使用を完全に避けるようにしてください。

実行速度が遅いコード:

var object = ['foo', 'bar'], i; 
for (i = 0; i < object.length; i++) { 
try { 
// do something that throws an exception 
} catch (e) { 
// handle exception 
} 
}
ログイン後にコピー

より高速に実行されるコード:

var object = [&#39;foo&#39;, &#39;bar&#39;], i; 
try { 
for (i = 0; i < object.length; i++) { 
// do something 
} 
} catch (e) { 
// handle exception 
}
ログイン後にコピー


グローバル変数の使用を避ける
関数または他のスコープでグローバル変数を使用する場合、スクリプト エンジンはそれを見つけるためにスコープ全体を走査する必要があります。彼ら。
グローバル スコープの変数はスクリプトのライフサイクル全体を通じて存在し、ローカル スコープの変数はローカル スコープが失われると破棄されます。

動作が遅いコード:

var i, 
str = &#39;&#39;; 
function globalScope() { 
for (i=0; i < 100; i++) { 
str += i; // here we reference i and str in global scope which is slow 
} 
} 
globalScope();
ログイン後にコピー

より高速に動作するコード:

function localScope() { 
var i, 
str = &#39;&#39;; 
for (i=0; i < 100; i++) { 
str += i; // i and str in local scope which is faster 
} 
} 
localScope();
ログイン後にコピー


パフォーマンス要件が重要な関数では for-in の使用を避ける
for-in ループでは、スクリプト エンジンがすべての関数のリストを作成する必要があるenumerable 属性のリストを取得し、それらが前の属性と重複しているかどうかを確認します。
for ループ スコープ内のコードが配列を変更しない場合は、配列の長さを事前に計算し、それを使用して for ループ内で配列を反復できます。

ゆっくり実行されるコード:

var sum = 0; 
for (var i in arr) { 
sum += arr[i]; 
}
ログイン後にコピー

より速く実行されるコード:

var sum = 0; 
for (var i = 0, len = arr.length; i < len; i++) { 
sum += arr[i]; 
}
ログイン後にコピー

以上がJavaScript での使用を避けるべきいくつかの関数とステートメントを要約します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート