for...in...
遍历可枚举对象,得到可枚举对象的属性值。而for...of...
遍历可迭代对象,得到可迭代对象的值(注意是值,不是属性值)。如下例中,采用两种方式遍历数组。
let arr = [1,2,3];
for (let item in arr) {
console.log(item);
}
for (let item of arr) {
console.log(item);
}
- 可枚举对象VS可迭代对象
- 数组既是可枚举对象也是可迭代对象
- 普通对象是可枚举,但不可迭代
- map,set是可迭代的,但是不可枚举
let obj = {1: "b", "a" : 2};
let map = new Map([[1,"b"], ["a", 3]]);
let arr = [1,2,3];
for(let item in obj) {
console.log(item);
}
for (let item in map) {
console.log(item);
}
for (let item in arr) {
console.log(item);
}
for (let item of map) {
console.log(item);
}
for (let item of arr) {
console.log(item);
}
for...in
不保证遍历顺序,for...of
遍历按照元素插入的顺序。