JavaScript で最も速いループのタイプはどれですか?いくつかの for ループの比較
JavaScript は、Web 開発分野における「常緑樹」です。 JavaScript フレームワーク (Node.js、React、Angular、Vue など) であっても、ネイティブ JavaScript であっても、それらはすべて非常に大きなファンベースを持っています。最新の JavaScript について話しましょう。ループは常にほとんどのプログラミング言語の重要な部分であり、最新の JavaScript では値を反復またはループするためのさまざまな方法が提供されます。
しかし問題は、どのループまたは反復がニーズに最適であるかを本当に知っているのかということです。 for
ループには、for
、for
(逆順)、for…of
、 など、さまざまなバリエーションがあります。 forEach
、for…in
、for…await
。この記事ではこれらについて説明します。
アプリケーションのパフォーマンスに影響を与える低レベルの間違いを防ぐために、どちらの for ループまたはイテレータがニーズに適しているかを理解します。
どちらのループが速いですか?
答えは実際には次のとおりです: for
(逆順)
私にとって最も驚くべきことは、ローカル コンピューター テスト後、for
(逆順) がすべての for
ループの中で最も高速であるという事実を受け入れる必要がありました。以下に、100 万を超える要素を含む配列に対してループを実行する例を示します。
ステートメント : console.time()
結果の精度は、テストを実行するシステム構成に大きく依存します。精度について詳しくは、こちらをご覧ください。
const million = 1000000; const arr = Array(million); // 注:这是稀疏数组,应该为其指定内容,否则不同方式的循环对其的处理方式会不同: // const arr = [...Array(million)] console.time('⏳'); for (let i = arr.length; i > 0; i--) {} // for(倒序) :- 1.5ms for (let i = 0; i < arr.length; i++) {} // for :- 1.6ms arr.forEach(v => v) // foreach :- 2.1ms for (const v of arr) {} // for...of :- 11.7ms console.timeEnd('⏳');
この結果の理由は非常に単純で、コード内の順方向および逆方向の for
ループにかかる時間はほぼ同じで、その差はわずか 0.1 ミリ秒です。その理由は、for
(逆順) では開始変数 let i = arr.length
を 1 回計算するだけで済むのに対し、順方向 for
ループでは計算が必要になるためです。 is 条件 i<arr.length
は、変数がインクリメントされるたびにチェックされます。この微妙な違いはそれほど重要ではないため、無視してかまいません。 (翻訳者注: データ量が少ない場合、またはコードが時間に依存しない場合は無視できます。ただし、翻訳者のテストによると、データ量が数十億、数千億などのように増大すると、ギャップが大きくなるそうです)は大幅に増加します。アプリケーションのパフォーマンスに対する時間の影響を考慮する必要があります。)
そして forEach
は Array
プロトタイプのメソッドであり、通常の for
ループと比較して、forEach
および for…of
は配列の反復処理に時間がかかります。 (翻訳者注: ただし、for…of
と forEach
はどちらもオブジェクトからデータを取得しますが、プロトタイプはデータを取得しないため、比較できないことに注意してください。)
ループの種類と使用場所
1. For ループ (順方向および逆順)
#おそらく誰もがこの基本的なサイクルをよく知っているはずだと思います。コードを承認された回数実行する必要がある場合は、どこでもfor ループを使用できます。最も基本的な
for ループは最も高速に実行されるため、毎回これを使用する必要があります。いいえ、パフォーマンスだけが唯一の基準ではありません。多くの場合、コードの読みやすさの方が重要です。アプリケーションに適したバリアントを選択しましょう。
2. forEach
forEach では、コールバック関数でオプションのパラメータ
this を使用することもできます。
const things = ['have', 'fun', 'coding']; const callbackFun = (item, idex) => { console.log(`${item} - ${index}`); } things.foreach(callbackFun); /* 输出 have - 0 fun - 1 coding - 2 */
forEach を使用したい場合、JavaScript の短絡演算子 (||、&&...) は使用できない、つまりスキップできないことに注意してください。各ループまたはループの終了。
3. for…of
それES6 (ECMAScript 6) で標準化されています。反復可能なオブジェクト (array
、map
、set
、string
など) に対するループを作成し、優れた利点は優れた可読性です。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>const arr = [3, 5, 7];
const str = &#39;hello&#39;;
for (let i of arr) {
console.log(i); // 输出 3, 5, 7
}
for (let i of str) {
console.log(i); // 输出 &#39;h&#39;, &#39;e&#39;, &#39;l&#39;, &#39;l&#39;, &#39;o&#39;
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
ループが早期に終了する場合でも、ジェネレーター内で for…of
を使用しないでください。ループを抜けた後、ジェネレーターは閉じられ、それ以上の結果を生成せずに再度反復が試行されます。
4. for 结论 最后,给你一条明智的建议 —— 优先考虑可读性。尤其是当我们开发复杂的结构程序时,更需要这样做。当然,我们也应该专注于性能。尽量避免增添不必要的、多余的花哨代码,因为这有时可能对你的程序性能造成严重影响。祝你编码愉快。 译者注 在译者的实际测试中,发现: 英文原文地址:https://medium.com/javascript-in-plain-english/which-type-of-loop-is-fastest-in-javascript-ec834a0f21b9 原文作者:kushsavani 本文转载自:https://juejin.cn/post/6930973929452339213 译者:霜羽 Hoarfroster 更多编程相关知识,请访问:编程入门!! 以上がJavaScript で最も速いループのタイプはどれですか?いくつかの for ループの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。in
for…in
会在对象的所有可枚举属性上迭代指定的变量。对于每个不同的属性,for…in
语句除返回数字索引外,还将返回用户定义的属性的名称。
因此,在遍历数组时最好使用带有数字索引的传统 for
循环。 因为 for…in
语句还会迭代除数组元素之外的用户定义属性,就算我们修改了数组对象(例如添加自定义属性或方法),依然如此。const details = {firstName: 'john', lastName: 'Doe'};
let fullName = '';
for (let i in details) {
fullName += details[i] + ' '; // fullName: john doe
}
<span style="font-size: 16px;">for…of</span>
和 <span style="font-size: 16px;">for…in</span>
for…of
和 for…in
之间的主要区别是它们迭代的内容。for…in
循环遍历对象的属性,而 for…of
循环遍历可迭代对象的值。let arr= [4, 5, 6];
for (let i in arr) {
console.log(i); // '0', '1', '2'
}
for (let i of arr) {
console.log(i); // '4', '5', '6'
}
for
最快,但可读性比较差foreach
比较快,能够控制内容for...of
比较慢,但香for...in
比较慢,没那么方便

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

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

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