处世应当谦虚,切忌轻人傲世。——佚名
简单说下区别:
for...in
遍历出来的是key
var obj = {a:1, b:2, c:3};
for (var prop in obj) {
console.log("obj." prop " = " obj[prop]);
}
// Output:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
for...of
遍历出来的是元素
const array1 = ['a', 'b', 'c'];
for (const element of array1) {
console.log(element);
}
// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
for await...of
和for...of
差不多,但支持遍历由Promise
组成的可迭代对象(如数组),使用时会自动await
直到Promise
执行结束才执行
var asyncIterable = {
[Symbol.asyncIterator]() {
return {
i: 0,
next() {
if (this.i < 3) {
return Promise.resolve({ value: this.i , done: false });
}
return Promise.resolve({ done: true });
}
};
}
};
(async function() {
for await (num of asyncIterable) {
console.log(num);
}
})();
// 0
// 1
// 2