1. Array:
const arr = [1, 2, 4, 6];
for (const item of arr) {
console.log(item);
}
输出:
2. Set:
const s = new Set([1, 3]);
console.log(s);
for (const item of s) {
console.log(item);
}
输出:
3. Map:
const m = new Map();
m.set('name', 'Jack');
m.set('age', 18);
// for (const item of m) {
// console.log(item);
// }
for (const [key, value] of m) {
console.log(key, value);
}
输出:
4. Object:
对于普通的对象,for...of结构不能直接使用,会报错,必须部署了 Iterator 接口后才能使用。
普通对象使用for...of:
const obj = {
name: 'Jack',
age: 18
};
for (const item of obj) {
console.log(item);
}
报错:TypeError: obj is not iterable。
部署了 Iterator 接口的对象使用for...of:
const obj = {
store: [1, 2, 3],
[Symbol.iterator]: function () {
let index = 0;
const _self = this;
return {
next() {
const result = {
value: _self.store[index],
done: index >= _self.store.length
};
index++;
return result;
}
}
}
}
for (const item of obj) {
console.log(item);
}
输出: