JavaScript中,for...in 和 for...of 的区别

起因

我一直分不清它们,所以专门研究对比下。

区别

1.官方说法

无论是for...in还是for...of语句都是迭代一些东西。它们之间的主要区别在于它们的迭代方式。
for...in:语句以原始插入顺序迭代对象的可枚举属性。
for...of:语句遍历可迭代对象定义要迭代的数据。

2.通俗易懂的说法

for...in:循环出的是key
for...of:循环出的是value
注意,for...ofES6新引入的特性。修复了ES5引入的for...in的不足。

示例

以下示例显示了与Array一起使用时,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
}

总结

在循环对象属性的时候,使用for...in;在遍历数组的时候,使用for...of

查阅文章有:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of
https://segmentfault.com/q/1010000006658882

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 送给最爱的朋友,真的太美了! (把手机横过来看) ...
    缘_8c5f阅读 4,258评论 0 0
  • 划分页面为逻辑区或逻辑分组。逻辑区(logical section):页面上彼此相关的一组元素。 在属于一个逻辑区...
    Holase阅读 1,209评论 0 0
  • 人生中所有痛苦的事情,总有一天我们都会微笑着讲出来。 世间所有的一切,都源于一场场遇见。冷遇见暖,就有了雨;冬遇见...
    小妖21阅读 1,482评论 0 0
  • 今日有酒,斗十钱,明日有无,别云间,今日有菊,身边伴,明日有苦,好似甜,今日有雨,今朝露,明日有情,何愁苦。 今日...
    贾拾远阅读 1,768评论 0 1