JS実行効率化のまとめ

Apr 23, 2018 am 10:51 AM
javascript 要約する 効率

今回はJSの実行効率を高める方法についてまとめてみました。JSの実行効率を高めるために使える注意点とは何か?実際の事例を見てみましょう。

1. の条件判断を行うには、論理記号&&または||を使用します

var foo = 10; 
foo == 10 && doSomething(); // 如果 foo == 10 则执行 doSomething(); 
foo == 5 || doSomething(); // 如果 foo != 5 则执行doSomething();
ログイン後にコピー

のデフォルト値を設定するためにも使用できます

2。 map() メソッド

配列を走査

Function doSomething(arg1){ 
 Arg1 = arg1 || 10; // 如果 arg1为设置那么 Arg1=10
}
ログイン後にコピー

3. 小数点以下の四捨五入

var squares = [1,2,3,4].map(function (val) { 
 return val * val; 
}); 
// 运行结果为 [1, 4, 9, 16]
ログイン後にコピー

4. 浮動小数点問題

var num =2.443242342; 
num = num.toFixed(4); // 保留四位小数位 2.4432
ログイン後にコピー
0.1+0.2 は 0.3 に等しい000000000000 0004、なぜこれは起こりますか? IEEE754 標準によれば、知っておく必要があるのは、すべての JavaScript 数値が 64 ビット バイナリの浮動小数点数として表現されるということだけです。開発者は、toFixed() メソッドと toPrecision() メソッドを使用して、この問題を解決できます。

5. for-in ループを使用して、走査されたオブジェクトのプロパティを確認します

次のコードは、主にオブジェクトのプロパティの走査を回避するためのものです。

0.1 + 0.2 === 0.3 // is false 
9007199254740992 + 1 // = 9007199254740992 
9007199254740992 + 2 // = 9007199254740994
ログイン後にコピー

6. カンマ演算子

7. jQuery セレクターを使用して、開発者は DOM 要素をキャッシュできます

for (var name in object) { 
 if (object.hasOwnProperty(name)) { 
  // 执行代码
 } 
}
ログイン後にコピー

8. inite( )

var a = 0; 
var b = ( a++, 99 ); 
console.log(a); // a 为 1 
console.log(b); // b 为 99
ログイン後にコピー

9. 配列内の負のインデックスを避ける

var navright = document.querySelector('#right'); 
var navleft = document.querySelector('#left'); 
var navup = document.querySelector('#up'); 
var navdown = document.querySelector('#down');
ログイン後にコピー
IndexOf() メソッドに渡されるパラメータが負でないことを確認してください。

10. (JSON を使用) シリアル化と逆シリアル化

isFinite(0/0) ; // false 
isFinite("foo"); // false 
isFinite("10"); // true 
isFinite(10); // true 
isFinite(undifined); // false 
isFinite(); // false 
isFinite(null); // true !!!
ログイン後にコピー

11. eval() または関数コンストラクターの使用は避けてください eval() および関数コンストラクターはスクリプト エンジンと呼ばれます。実行されるたびに実行可能コードに変換されますが、これは非常にコストのかかる操作です。

var numbersArray = [1,2,3,4,5]; 
var from = numbersArray.indexOf("foo") ; // from is equal to -1 
numbersArray.splice(from,2); // will return [5]
ログイン後にコピー

12. with()メソッドの使用は避ける

with()を使用してグローバル領域に変数を挿入すると、同じ名前の変数があると混同しやすくなります。リライト。

13. 配列内での for-in ループの使用を避ける

次のように使用する代わりに:

var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} }; 
var stringFromPerson = JSON.stringify(person); 
/* stringFromPerson is equal to "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}" */ 
var personFromString = JSON.parse(stringFromPerson); 
/* personFromString is equal to person object */
ログイン後にコピー

これはより良いでしょう:

var func1 = new Function(functionCode); 
var func2 = eval(functionCode);
ログイン後にコピー
i と len はループ内の最初のステートメントであるため、それぞれこれはインスタンス化ごとに 1 回実行されるため、次の場合よりも高速に実行されます:
var sum = 0; 
for (var i in arrayNumbers) { 
 sum += arrayNumbers[i]; 
}
ログイン後にコピー
なぜですか?配列の長さ、arrayynNumbers はループ反復ごとに再計算されます。

14. setTimeout() メソッドと setInterval() メソッドに文字列を渡さないでください

これら 2 つのメソッドに文字列を渡すと、文字列は eval と同様に再計算されるため、速度は Slow に変更されます。次のようにします:

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

代わりに、次のように使用する必要があります:

for (var i = 0; i < arrayNumbers.length; i++)
ログイン後にコピー
15. 長い if/else ステートメントの代わりに switch/case ステートメントを使用します

3 つ以上のケースがある場合は、switch を使用します。 /case ははるかに高速で、コードはよりエレガントに見えます。

16. 数値範囲に遭遇した場合、switch/casne を使用できます

setInterval('doSomethingPeriodically()', 1000); 
setTimeOut('doSomethingAfterFiveSeconds()', 5000);
ログイン後にコピー

17. オブジェクトを作成します、オブジェクトの属性は指定されたオブジェクトです

この関数は、次のような指定されたオブジェクトの属性を持つオブジェクトを作成します: 18. HTML エスケープ関数

19。

try-catch-finally在当前范围里运行时会创建一个新的变量,在执行catch时,捕获异常对象会赋值给变量。
不要这样使用:

var object = ['foo', 'bar'], i; 
for (i = 0, len = object.length; i <len; i++) { 
 try { 
  // 执行代码,如果出错将被捕获
 } 
 catch (e) {  
  // 获取错误,并执行代码
 } 
}
ログイン後にコピー

应该这样使用:

var object = ['foo', 'bar'], i; 
try { 
 for (i = 0, len = object.length; i <len; i++) { 
  // 执行代码,如果出错将被捕获
 } 
} 
catch (e) {  
 // 获取错误,并执行代码
}
ログイン後にコピー

20.给XMLHttpRequests设置timeouts

如果一个XHR需要花费太长时间,你可以终止链接(例如网络问题),通过给XHR使用setTimeout()解决。

var xhr = new XMLHttpRequest (); 
xhr.onreadystatechange = function () { 
 if (this.readyState == 4) { 
  clearTimeout(timeout); 
  // 执行代码
 } 
} 
var timeout = setTimeout( function () { 
 xhr.abort(); // call error callback 
}, 60*1000 /* 设置1分钟后执行*/ ); 
xhr.open('GET', url, true); 
 
xhr.send();
ログイン後にコピー

此外,通常你应该完全避免同步Ajax调用。

21.处理WebSocket超时

一般来说,当创建一个WebSocket链接时,服务器可能在闲置30秒后链接超时,在闲置一段时间后,防火墙也可能会链接超时。

为了解决这种超时问题,你可以定期地向服务器发送空信息,在代码里添加两个函数:一个函数用来保持链接一直是活的,另一个用来取消链接是活的,使用这种方法,你将控制超时问题。

添加一个timeID……

var timerID = 0; 
function keepAlive() { 
 var timeout = 15000; 
 if (webSocket.readyState == webSocket.OPEN) { 
  webSocket.send(''); 
 } 
 timerId = setTimeout(keepAlive, timeout); 
} 
function cancelKeepAlive() { 
 if (timerId) { 
  cancelTimeout(timerId); 
 } 
}
ログイン後にコピー

keepAlive()方法应该添加在WebSocket链接方法onOpen()的末端,cancelKeepAlive()方法放在onClose()方法下面。

22.记住,最原始的操作要比函数调用快

对于简单的任务,最好使用基本操作方式来实现,而不是使用函数调用实现。
例如

var min = Math.min(a,b); 
A.push(v);
ログイン後にコピー

基本操作方式:

var min = a < b ? a b; 
A[A.length] = v;
ログイン後にコピー

23.编码时注意代码的美观、可读

JavaScript是一门非常好的语言,尤其对于前端工程师来说,JavaScript执行效率也非常重要。

我们在编写JavaScript程序时注意一些小细节,掌握一些常用的实用小技巧往往会使程序更简捷,程序执行效率更高

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

JS中时间单位比较的方法

JS操作JSON详细介绍

以上がJS実行効率化のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PyCharm リモート開発実践ガイド: 開発効率の向上 PyCharm リモート開発実践ガイド: 開発効率の向上 Feb 23, 2024 pm 01:30 PM

PyCharm は、コードの作成、デバッグ、プロジェクト管理のために Python 開発者によって広く使用されている強力な Python 統合開発環境 (IDE) です。実際の開発プロセスでは、ほとんどの開発者は、開発効率を向上させる方法、チームメンバーと開発にどのように協力するかなど、さまざまな問題に直面します。この記事では、開発者がリモート開発で PyCharm をより効果的に使用し、作業効率を向上させるのに役立つ、PyCharm のリモート開発の実践的なガイドを紹介します。 1. PyChでの準備作業

Linux システムでの system() 関数の使用法の概要 Linux システムでの system() 関数の使用法の概要 Feb 23, 2024 pm 06:45 PM

Linux での system() 関数の概要 Linux システムでは、system() 関数は非常に一般的に使用される関数であり、コマンド ライン コマンドの実行に使用できます。この記事では、system() 関数を詳細に紹介し、いくつかの具体的なコード例を示します。 1. system() 関数の基本的な使用法 system() 関数の宣言は次のとおりです: intsystem(constchar*command); コマンド パラメーターは文字です。

AI描画で遊ぶStable Diffusionのプライベート展開 AI描画で遊ぶStable Diffusionのプライベート展開 Mar 12, 2024 pm 05:49 PM

StableDiffusion はオープンソースの深層学習モデルで、主な機能はテキスト記述を通じて高品質な画像を生成することであり、グラフ生成、モデルの結合、モデルのトレーニングなどの機能をサポートしています。このモデルの操作インターフェイスは次の図に示されています。画像の生成方法. 以下は、水を飲む鹿の画像を作成するプロセスの紹介です. 画像を生成する際には、プロンプトワードとネガティブプロンプトワードに分けられます. プロンプトワードを入力する際に​​は、それを説明する必要があります希望するシーン、オブジェクト、スタイル、色を明確に説明してください。たとえば、単に「鹿が水を飲む」と言うのではなく、「小川があり、鬱蒼とした木の隣にあり、その小川の隣に鹿が水を飲んでいます」と言うと、否定的なプロンプトの言葉が逆の方向になります。例:建物も人も橋も柵もありません。また、説明が曖昧すぎると不正確な結果が生じる可能性があります。

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

Pythonをマスターして仕事の効率と生活の質を向上させましょう Pythonをマスターして仕事の効率と生活の質を向上させましょう Feb 18, 2024 pm 05:57 PM

タイトル: Python は生活をより便利にします: この言語をマスターして仕事の効率と生活の質を向上させましょう 強力で学びやすいプログラミング言語として、Python は今日のデジタル時代にますます人気が高まっています。 Python は、プログラムを作成したりデータ分析を実行したりするためだけでなく、私たちの日常生活でも大きな役割を果たします。この言語をマスターすると、仕事の効率が向上するだけでなく、生活の質も向上します。この記事では、具体的なコード例を使用して、日常生活における Python の幅広い応用例を示し、読者の役に立つようにします。

フロントエンドの開発効率を向上させるためのセッションストレージの使用方法を学ぶ フロントエンドの開発効率を向上させるためのセッションストレージの使用方法を学ぶ Jan 13, 2024 am 11:56 AM

sessionStorage の役割をマスターし、フロントエンド開発の効率を向上させるには、具体的なコード例が必要です インターネットの急速な発展に伴い、フロントエンド開発の現場も日々変化しています。フロントエンド開発を行う場合、多くの場合、大量のデータを処理し、後で使用するためにブラウザに保存する必要があります。 SessionStorage は、一時的なローカル ストレージ ソリューションを提供し、開発効率を向上させる非常に重要なフロントエンド開発ツールです。この記事ではsessionStorageの役割を紹介します。

サブネットマスク: ネットワーク通信効率に対する役割と影響 サブネットマスク: ネットワーク通信効率に対する役割と影響 Dec 26, 2023 pm 04:28 PM

サブネット マスクの役割とネットワーク通信効率への影響 はじめに: インターネットの普及により、ネットワーク通信は現代社会に不可欠な部分となっています。同時に、ネットワーク通信の効率化も注目されています。ネットワークの構築と管理のプロセスにおいて、サブネット マスクは重要かつ基本的な構成オプションであり、ネットワーク通信において重要な役割を果たします。この記事では、サブネットマスクの役割とネットワーク通信効率への影響について紹介します。 1. サブネットマスクの定義と機能 サブネットマスク(subnetmask)

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

See all articles