js で配列を走査するには 2 つの方法があります
var array=['a']
//標準 for ループ
for(var i=1;i
アラート(配列[i])
}
//foreach ループ
for(配列内の変数 i){
アラート(配列[i])
}
通常の状況では、配列を走査する上記の 2 つの方法の結果は同じです。まず、この 2 つの最初の違いについて話しましょう
標準の for ループの i は配列の添字を表す数値型ですが、js 内のすべてがオブジェクトであるため、foreach ループの i は配列のキーの型が文字列であることを表します。自分で試してみてください。次のコードを追加すると、上記の実行結果は異なります。
//拡張された js ネイティブ配列
Array.prototype.test=function()
}
試してみて、上記のコードが何を行うかを確認してください。標準の for ループは実際に配列をループしていることがわかりましたが、この時点では、foreach ループは先ほど作成したテスト メソッドを出力します。これが、配列を走査するための for と foreach の最大の違いです。プロジェクト内の配列を走査するために foreach を使用する場合、ある日、誰かが誤って js のネイティブ Array クラスを拡張したり、外部の js フレームワークを導入してネイティブ クラスも拡張したとします。配列。 。次に問題が発生します。
さらに 2 つの提案
1. 配列を走査するために for in を使用せず、標準の for ループ変数配列を使用します (導入する JS がプロトタイプを使用してネイティブ配列を拡張するかどうかは保証できません)
2. js のネイティブ クラスを拡張したい場合は、プロトタイプ
を使用しないでください。