0

これまでに見たことのない深刻なバグがあります。まず第一に、私は単純な配列を持っています:

var myArray = ["123", "456", "789"]

次に、この配列を for..in ループで反復処理します。

function mapData(list) {
for ( var i in list) {
    var item = list[i];
    if (item) {
      // do something
    }
  }
}

mapData(myArray) を使用してメソッドを呼び出した後、firebug はデバッガーに次のように表示します。

  1. ループ: i = 0; 項目 = 123;
  2. ループ: i = 1; 項目 = 456;
  3. ループ: i = 2; アイテム = 789;
  4. ループ: i = 比較;
  5. ループ: i = ユニオン;
  6. ループ: i = 削除;
  7. ループ: i = 選択;
  8. ループ: i = 含む;

それがプロトタイプ関数だと思います。しかし、なぜ?何か案は?

何度も言いますが、これは見たことがありません…

4

2 に答える 2

4

for..inArray の繰り返しには使用しないでください。これは、オブジェクトのすべての列挙可能なプロパティをArray反復し、それらを順番に反復しない場合があります。次の 2 つの方法があります。

  • Array.forEach(IE8 ではサポートされていませんが、おそらく shim が存在します)。
  • 単純なforループ
于 2013-09-06T13:51:14.087 に答える