专栏首页小蔚记录js --- for in 和 for of

js --- for in 和 for of

前言:for of是ES6新增的循环方法。前面已经说到了 【JavaScript】for、forEach 、for in、each循环详解。那for of又是怎么使用的?

一、使用例子

使用例子(一)

var arr = ['nick','freddy','mike','james'];
for(var item of arr){    
    console.log(item);
}

输出结果:

输出的是数组里面的值。

二、使用例子(二)

var arr = [
    { name:'nick', age:18 },
    { name:'freddy', age:24 },
    { name:'mike', age:26 },
    { name:'james', age:34 }
];
for(var item of arr){    
    console.log(item.name,item.age);
}

输出结果:

二、与for in 区别

区别①:for of无法循环遍历对象

var userMsg = {
    nick: {
        name: 'nick',
        age: 18,
        sex: '男'    
    },
    freddy: {
        name: 'freddy',
        age: 24,
        sex: '男'
    }    
};
 
for(var i1 in userMsg){
    console.log(i1);    
    for(var i2 in userMsg[i1]){
        console.log(i2+': '+userMsg[i1][i2]);
    }
}
console.log('-----------分割线-----------');
for(var item of userMsg){    
    console.log(item);
}

输出结果:

区别②:遍历输出结果不同

var arr = ['nick','freddy','mike','james'];
for(var i in arr){
    console.log(i);    
}
console.log('-----------分割线-----------');
for(var item of arr){    
    console.log(item);
}

输入结果:

不难看出,for in循环遍历的是数组的键值(索引),而for of循环遍历的是数组的值

区别③:for in 遍历定义属性,for of不会

var arr = ['nick','freddy','mike','james'];
arr.name = "数组";
 
for(var i in arr){
    console.log(i+': '+arr[i]);    
}
console.log('-----------分割线-----------');
for(var item of arr){    
    console.log(item);
}

输入结果:

给数组添加一个自定义属性name,并且赋值"数组"。然后进行遍历输出的,会发现新定义的属性也被for in输出来了,而for of并不会对name进行输出。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • js ---- 实现千位分隔符

    var num = 1234567; var string = num.toString(); var arr = string.split('').rev...

    小蔚
  • 点击保存网页 (及页面的数据)

    小蔚
  • es6 ----- export 和 import

    ES6 模块不是对象,而是通过export命令显式指定输出的代码,再通过import命令输入。

    小蔚
  • 数组常用循环

    用户6973020
  • JavaScript从初级往高级走系列————异步

    上面这个例子中,当执行了alert(1),如果用户不点击确定按钮,console.log(2)是不会执行的。

    FinGet
  • JavaScript异步编程

    平时开发经常会用到js异步编程,由于前端展示页面都是基于网络机顶盒(IPTV的一般性能不太好,OTT较好),目前公司主要采取的异步编程的方式有setTimeou...

    Jack Chen
  • Javascript数组

    定义    定义空数组       var arr = new Array();       var arr = [];    定义一个包含1,2,3的数组  ...

    用户1624346
  • javascript正则表达式RegExp再次研究-replace

    虽然有那么多属性,但是基本用不到,为什么呢?因为这些信息都包含在模式声明中了: 字面量创建的正则

    陌上寒
  • Perl_控制结构(2)

    while($i){print “$i “;$i--;};         #输出:4 3 2 1

    西游东行

扫码关注云+社区

领取腾讯云代金券