JScript中for in与for of循环的区别

for…of语句创建的循环可以遍历对象。在ES6中引入的for…of可以替代另外两种循环语句for…in和forEach(),而且这个新的循环语句支持新的迭代协议。
for…of允许你遍历可迭代的数据结构,比如数组、字符串、映射、集合等,循环集合本身的元素。
1.for-in遍历数组的值

        var arr = [1,2,3,4,5];
        
        for(let val of arr.values()){
            console.log(val)
        }
        //1
        //2
        //3
        //4
        //5
        除此之外也可遍历数组的索引  for(let key of arr.keys()){}

2.遍历字符串与类数组

let name = 'Asher';
 
for (let char of name) {
 
console.log(char); //A s h e r
 
}
    function sum() {
        let sum = 0
        for (let num of arguments) {
            sum += num
        }
        console.log(sum);        //15
    }

    sum(1, 2, 3, 4, 5)

## for…in循环它遍历的其实是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性

for in 和for of区别
for…of循环只能和迭代一起工作。但普通对象是不可迭代的
for…in在循环中将遍历对象中所有可枚举属性,包括对象继承自原型对象的属性
题外话:js中什么是可枚举属性
可枚举性(enumerable)用来控制所描述的属性,是否将被包括在for…in循环之中。具体来说,如果一个属性的enumerable为false,下面三个操作不会取到该属性。

  • for…in循环
  • Object.keys方法
  • JSON.stringify方法`在这里插入代码片
var o = {a:1, b:2};
o.c = 3;
Object.defineProperty(o, 'd', {
  value: 4,
  enumerable: false
});
o.d    //可通过此方式直接获取d的值但是在for in中不会取到该属性值
// 4
for( var key in o ) console.log( o[key] ); 
// 1
// 2
// 3
Object.keys(o)  // ["a", "b", "c"]
JSON.stringify(o // => "{a:1,b:2,c:3}"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值