美文网首页JS,JQ
for of和for in区别

for of和for in区别

作者: Artifacts | 来源:发表于2019-08-18 14:24 被阅读0次

    for...in

    以任意顺序遍历一个对象自有的、继承的、可枚举的、非Symbol的属性。对于每个不同的属性,语句都会被执行。

    for...of

    ES6 引入for...of循环,作为遍历所有数据结构的统一的方法。一个数据结构只要部署了Symbol.iterator属性,就被视为具有 iterator 接口,就可以用for...of循环遍历它的成员。也就是说,for...of循环内部调用的是数据结构的Symbol.iterator方法。for...of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。


    区别

    JavaScript 原有的for...in循环,只能获得对象的键名,不能直接获取键值。ES6 提供for...of循环,允许遍历获得键值。

    var arr = ['a', 'b', 'c', 'd'];
    for (let a in arr) {
         console.log(a); // 0 1 2 3
    }
    for (let a of arr) {     
         console.log(a); // a b c d
    }
    

    for...of循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟for...in循环也不一样。

    let arr = [3, 5, 7];
    arr.foo = 'hello';
    for (let i in arr) {    
          console.log(i); // "0", "1", "2", "foo"
    }
    for (let i of arr) {    
          console.log(i); //  "3", "5", "7"
    }
    

    for...of循环不会返回数组arr的foo属性。 推荐在循环对象属性的时候,使用for...in,在遍历数组的时候的时候使用for...of

    相关文章

      网友评论

        本文标题:for of和for in区别

        本文链接:https://www.haomeiwen.com/subject/foprsctx.html