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 = ['foo', 'bar'], i; try { for (i = 0; i < object.length; i++) { // do something } } catch (e) { // handle exception }
グローバル変数の使用を避ける
関数または他のスコープでグローバル変数を使用する場合、スクリプト エンジンはそれを見つけるためにスコープ全体を走査する必要があります。彼ら。
グローバル スコープの変数はスクリプトのライフサイクル全体を通じて存在し、ローカル スコープの変数はローカル スコープが失われると破棄されます。
動作が遅いコード:
var i, str = ''; 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 = ''; 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 サイトの他の関連記事を参照してください。

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版
中国語版、とても使いやすい

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック



