概述
-
for in 是es 5 的数组方法,for…in 语句以任意顺序迭代对象的可枚举属性,常用来遍历对象的键。
-
–for … in会遍历对象的整个原型链,性能非常差不推荐使用,而for … of只遍历当前对象不会遍历原型链
-
对于数组的遍历,for … in会返回数组中所有可枚举的属性(包括原型链上可枚举的属性),for … of只返回数组的下标对应的属性值
-
for of是es6新增的方法,可以用来遍历对象的值
-
for of的出现是为了弥补for in缺陷的
for… of
-
for…of语句在可迭代(遍历)对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句
-
语法: for ( var variable of iterable{
//statements- variable
在每次迭代中,将不同属性的值分配给变量。(即,将值给变量) - iterable
被迭代枚举其属性的对象。(即被给值的对象)
}
- variable
-
遍历数组, 例:
let arr = [10, 20, 30];
for (let value of arr) {
value += 1;
console.log(value);
}
// 11
// 21
// 31
for… in
-
for…in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。
-
语法: for (key in object){
- key
在每次迭代时,key会被赋值为不同的属性名(键名)。 - object
非Symbol类型的可枚举属性被迭代的对象。
}
- key
-
遍历对象,例:
var obj = {
a:1,
b:2,
c:3
};
for (var key in obj) {
console.log("obj." + key + " = " + obj[key]);
}
// logs==>
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"