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


 上一篇
JavaScript中,map和foreach的异同点 JavaScript中,map和foreach的异同点
起因 我平时两个都会用,也知道一个有返回值一个没有返回值。但公司一个小妹子突然有一天就问我她有没有用对的时候,我竟然不能一眼确定,所以觉得自己还是没有熟练掌握,专门梳理一下,并记录下来,供以后记不清了查看。 异同点相同点1、都是循环遍历数
2018-11-27
下一篇 
react+react-router+mobx+axios+less 搭建一个框架 react+react-router+mobx+axios+less 搭建一个框架
之前做过react项目,但是没有全面搭过框架,顺便研究一波mobx。项目代码github地址:https://github.com/lingziyb/react-mobx-demo ##一、选react脚手架 想:自己搭整个框架还是比
2018-08-06
  目录