for...in遍历一个对象可枚举属性、 hasOwnProperty() 来确定某属性是否是对象、in本身的属性;for...of

for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。(遍历数组不推荐使用)

for..in不推荐使用在数组:因为for...in不能保证将以任何特定的顺序返回索引。

    //for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。
    let obj = {
        a: 1,
        b: 2,
        c: 3
    };
    for (let i in obj) (
        console.log(i),//a   b   c
        console.log(obj[i])//1   2   3
    )  

如果你只要考虑对象本身的属性,而不是它的原型,那么执行 hasOwnProperty() 来确定某属性是否是对象本身的属性,返回值是boolean值

//如果你只要考虑对象本身的属性,而不是它的原型,
// 那么执行 hasOwnProperty() 来确定某属性是否是对象本身的属性,返回值是boolean值
    let obj = {
        a: 1,
        b: 2,
        c: 3,
        __proto__: {
            lastName: 'xie'
        }
    };
    Object.prototype.addMsg = 'LM';
    for (let i in obj) (
        console.log(i),//a   b   c lastName  addMsg
            console.log(obj[i])//1   2   3  xie  LM
    );
    //现在你只想遍历obj里面的属性,原型上面的属性不需要
    for (let i in obj) {
        if (obj.hasOwnProperty(i)) {
            console.log(obj[i]);// 1  2   3
        }
    }

 in基本上在开发的时候没有怎么用过

//注意in也可以判断属性是否存在这个对象中,不过in不单单会把自己的认为是自己的,就算是父级的也认为是自己的,
   // 所以就打印出来了五个true
    let obj = {
        a: 1,
        b: 2,
        c: 3,
        __proto__: {
            lastName: 'xie'
        }
    };
    Object.prototype.addMsg = 'LM';
    for (let i in obj) (
        console.log(i in obj)//true true  true  true  true
    );

for...of:使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。

const arr = [1,11,22]
for(let i of arr){
    console.log("i:",i)
}

ES6的for...of与JavaScript原有的for...in的不同在于:for...of的i循环出来的是键值,而for...in的i循环出来的是键名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值