Javascript学習メモ:配列の走査と長さ属性_基礎知識

WBOY
リリース: 2016-05-16 16:30:43
オリジナル
1417 人が閲覧しました

配列は Javascript のオブジェクトですが、配列を走査するために for in ループを使用することはお勧めできません。実際、配列に対して for in ループを使用できない理由はたくさんあります。
for in ループはプロトタイプ チェーン上のすべてのプロパティを列挙し、それを停止する唯一の方法は hasOwnProperty を使用して判断することであるため、これは通常の for ループよりもはるかに遅くなります。

トラバース

最高のパフォーマンスを得るには、配列を反復処理する最良の方法は、従来の for ループを使用することです。

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

var list = [1, 2, 3, 4, 5, ...... 100000000];
for(var i = 0, l = list.length; i console.log(list[i]);
}

ここでの追加のトリックは、l = list.length を使用して配列の長さをキャッシュすることです。
length プロパティが配列自体に定義されている場合でも、ループの各反復には依然としてオーバーヘッドが存在します。最新の Javascript エンジンにはこの状況に合わせてパフォーマンスが最適化されている可能性がありますが、JavaScript コードが常にこのブラウザで実行されるという保証はありません。
実際、キャッシュされていない長さのループは、キャッシュされた長さのループよりもはるかに遅くなります。

長さ属性

length プロパティはゲッター メソッドを通じて配列内の要素の数のみを返しますが、配列はセッター メソッドを通じて切り詰めることができます。

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

var foo = [1, 2, 3, 4, 5, 6];
foo.length = 3;
foo; // [1, 2, 3]
foo.length = 6;
foo.push(4);
foo; // [1, 2, 3, 未定義, 未定義, 未定義, 4]

length プロパティに小さい数値を代入すると配列が切り詰められますが、大きい数値を代入しても配列は切り捨てられません。

概要

最適なパフォーマンスを得るには、for in ループの代わりに for ループを使用し、長さプロパティをキャッシュすることをお勧めします。

メソッドを持たず、一意の属性長が 1 つだけの配列オブジェクトもあります。文字列オブジェクトには長さメソッドがあります~~

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!