处世应当谦虚,切忌轻人傲世。——佚名
简单说下区别:
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