for in与for of的区别

2020-10-27  本文已影响0人  SailingBytes

1、对象遍历

for in 会遍历对象的整个原型链,性能很好,推荐使用。

for of 只遍历当前对象,不会遍历原型链。

var obj = {a: 1, b: 2, c: 3};

for (key  in obj) {

    console.log(key, obj[key])

}

var obj = {a: 1, b: 2, c: 3};

obj[Symbol.iterator] = function(){

    var keys = Object.keys(this);

    var count = 0;

    return {

        next(){

            if(count<keys.length){

                return {value: obj[keys[count++]],done:false};

            }else{

                return {value:undefined,done:true};

            }

        }

    }

};

for (key  in obj) {   

    console.log(key, obj[key])

}

//  {a: 1}

// {a: 2}

//  {a:3}

2、数组遍历

for in 会返回数组中所有可枚举的属性(包括原型链上可枚举的属性),不推荐使用。

var arr = [{a:1}, {a:2},{a:3}]

for (key in arr) {

    console.log(arr[key])

}

//  {a: 1}

// {a: 2}

//  {a:3}

for of 只返回数组的下标对应的属性值

var arr = [{a:1}, {a:2},{a:3}]

for (item of arr) {

    console.log(item)

}

// {a: 1}

// {a: 2}

// {a:3}

上一篇下一篇

猜你喜欢

热点阅读