【ES6】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);
}

输出结果:


输出的是数组里面的值。


二、与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进行输出。


猜你喜欢

转载自blog.csdn.net/w390058785/article/details/80522383