for in / for of 挙動の違い

for in / for of 挙動の違い 追加メモです。

let data = ['apple', 'peach', 'banana'];
Array.prototype.hoge = function() {};  // 処理に関係ない拡張

for(let d of data) {
  console.log('for of: ',d);
}
for(let key in data) {
  // if (!data.hasOwnProperty(key)) continue
  console.log('for in: ', data[key]);
}
  • for in は、index/key を取ってくるので、配列での使用は推奨されていないみたいです。
  • for in は、あと余計なものまでとってくることがあるので、 コメントにしてある処理を挟んだほうが安全です。
  • for in は、取得の順番も保証されていなかったような、オブジェクト専用みたいです。
  • 配列は,すなおに for of 使ったほうがいいと言うことでしょう