ホームページ ウェブフロントエンド jsチュートリアル 長さの値を forloop_javascript ヒントにキャッシュする必要がありますか?

長さの値を forloop_javascript ヒントにキャッシュする必要がありますか?

May 16, 2016 pm 03:48 PM

for ループ内で長さの値をキャッシュする必要があるかどうか、多くのプログラマーがこの問題に悩まされていると思います。この問題の分析については以下を参照してください。

JS パフォーマンスの最適化には、

という一般的な小規模な最適化があります。

// 不缓存 
for (var i = 0; i < arr.length; i++) {
  ...
}

// 缓存
var len = arr.length;
for (var i = 0; i < len; i++) {
  ...
}

ログイン後にコピー

では、この書き方をやめるべきでしょうか? いいえ、この書き方を使用しなければならない別の状況があります。

例を参照してください:

コードをコピー コードは次のとおりです:

var divs = document.getElementsByTagName("div"), i, div ;
for( i=0; i div = document.createElement("div");
document.body.appendChild("div");
}

上記のコードは無限ループを引き起こします。コードの最初の行はすべての div 要素のノードリストを取得します。ノードリストは動的であるため、新しい div がページに追加される限り、次の for ループが更新されます。 divs が再度評価されるため、i と divs.length は毎回同時にインクリメントされ、その結果、それらの値は等しくなり、無限ループが作成されます。

したがって、ノードリストを反復する場合は、length 属性を使用して 2 番目の変数を初期化し、その反復子をその変数と比較するのが最善です。変更されたコードは次のとおりです。

コードをコピー コードは次のとおりです:

var divs = document.getElementsByTagName("div"), i, div ,len ;
for(i=0;len=divs.length;i div = document.createElement("div");
document.body.appendChild("div");
}

この例では、len がループの先頭で divs.length のスナップショットを保存するため、ループの反復が必要な場合に、前の例で発生した無限ループの問題が回避されます。ノードリストでは、このメソッドを使用する方が安全です。

概要:
1. 長さの値をキャッシュすることがパフォーマンスの最適化に有益かどうかは、特定の状況に基づいて判断する必要があります。一般的に、DOM へのアクセスを減らすことは依然として有益です。 2. ノードリストを操作する必要がある場合、無限ループを避けるために長さの値をキャッシュすることをお勧めします。

上記の内容は、長さの値を for ループでキャッシュする必要があるかどうかについての完全な紹介です。気に入っていただければ幸いです。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScriptの文字列文字を交換します

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

カスタムGoogle検索APIセットアップチュートリアル

例JSONファイルの例 例JSONファイルの例 Mar 03, 2025 am 12:35 AM

例JSONファイルの例

8見事なjQueryページレイアウトプラグイン 8見事なjQueryページレイアウトプラグイン Mar 06, 2025 am 12:48 AM

8見事なjQueryページレイアウトプラグイン

独自のAjax Webアプリケーションを構築します 独自のAjax Webアプリケーションを構築します Mar 09, 2025 am 12:11 AM

独自のAjax Webアプリケーションを構築します

' this' JavaScriptで? ' this' JavaScriptで? Mar 04, 2025 am 01:15 AM

' this' JavaScriptで?

ソースビューアーでjQueryの知識を向上させます ソースビューアーでjQueryの知識を向上させます Mar 05, 2025 am 12:54 AM

ソースビューアーでjQueryの知識を向上させます

モバイル開発用のモバイルチートシート10個 モバイル開発用のモバイルチートシート10個 Mar 05, 2025 am 12:43 AM

モバイル開発用のモバイルチートシート10個

See all articles