JS里的for…in和for…of的用法与区别

for…in 循环
for…in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。
for…in 语句以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。
因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。
像 Array和 Object使用内置构造函数所创建的对象都会继承自Object.prototype和String.prototype的不可枚举属性,例如 String 的 indexOf() 方法或 Object的toString()方法。循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性(更接近原型链中对象的属性覆盖原型属性)。

var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"
 
mycars.color = "white"
 
for (var x in mycars)
{
   console.log(mycars[x]);
}

for…of 循环

for…of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。

var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"
 
mycars.color = "white"
 
for (var x of mycars)
{
   console.log(x);
}

区别:
for…in 遍历(当前对象及其原型上的)每一个属性名称,而 for…of遍历(当前对象上的)每一个属性值。
for … in循环将把name包括在内,但Array的length属性却不包括在内。

for … of循环则完全修复了这些问题,它只循环集合本身的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值