一、使用例子
使用例子(一)
-
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进行输出。