for of 和 for in 的区别

分类:JavaScript     发布时间:2019-11-21     最后更新:2021-09-08     浏览数:3052
在 JavaScript 中,什么时候该用 for of?什么时候该用 for in?本文给了一个简单的例子,让你彻底明白。

for in 和 for of

定义

for (variable of iterable) {
    // statements
}

其中 iterable 可以是 ArrayMapSetStringTypedArrayarguments 包括显式实现可迭代协议的对象等等

for...of 和 for...in 的区别

Object.prototype.objCustom = function() {}; 
Array.prototype.arrCustom = function() {};

let iterable = [3, 5, 7];
iterable.foo = 'hello';

for (let i in iterable) {
  console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}

for (let i in iterable) {
  if (iterable.hasOwnProperty(i)) {
    console.log(i); // logs 0, 1, 2, "foo"
  }
}

for (let i of iterable) {
  console.log(i); // logs 3, 5, 7
}

结论:

  1. for key in obj 会遍历可枚举属性,包括继承下来的属性;
  2. for item of iterable 会遍历 iterable 可迭代的值,这些是数组元素,而不是任何对象的属性。

参考 for...of

上一篇: 体验 Antv G2 的简洁 下一篇: 我的 MySQL 大总结