JS for-in和for-of的区别

for in 

let arr = [1, 2, 3, 4, 5]
Array.prototype.id = 123
arr.name = 'Jessica'
for (let index in arr) {
	if (index == 2) {
	// break;//0,1
	// continue;//0,1,3,4
	// return;//0,1
	}
	console.log(index, arr[index]);//遍历[1,2,3,4,5,Jessica,123]
}

for of

let arr = [1, 2, 3, 4, 5]
Array.prototype.id = 321
arr.name = 'Mars'
for (let value of arr) {
	console.log(value);//只能拿到[1,2,3,4,5]
}

两者区别:
    1.for-in只是获取数组的索引;而for-of会获取数组的值
    2.for-in会遍历对象的整个原型链,性能差;而for-of只遍历当前对象,不会遍历原型链
    3.对于数组的遍历,for-in会返回数组中所有可枚举的属性(包括原型链上可枚举的属性);for-of只返回数组的下标对应的属性值
    4.for-of适用遍历数组/字符串/map/set等有迭代器对象的集合,但是不能遍历普通对象(obj is not iterable)

补充说明for-of只遍历当前有迭代器对象的集合,不会遍历原型链:
 

let obj = {
	name: 'han',
	sex: 'female'
}
console.log(Object.keys(obj));//返回索引值数组 => ['name','female']
obj.dance = function () {
	console.log('dance');
}
Object.prototype.say = function () {
	console.log('say');
}
for (let value of Object.keys(obj)) {
	console.log(value);//name;sex;dance
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值