for in - for of 对比
- for in:遍历数组的索引
- for of:遍历数组的值 ```javascript var a = [“a”,”b”,”c”,”d”,”e”];
for (var idx in a) { console.log( idx ) // 0 1 2 3 4 }
for (var val of a) {
console.log( val ) // “a” “b” “c” “d” “e”
}
<a name="BBbgM"></a># 原理- 在底层,for..of 循环向 iterable 请求一个迭代器(通过内建的 `Symbol.iterator`),然后反复调用这个迭代器把它产生的值赋给循环迭代变量。```javascriptvar it = {// 使迭代器it成为iterable[Symbol.iterator]() { return this },next() { .. }};it[Symbol.iterator]() === it; // true
例子
var arr = [1,2,3];var it = arr[Symbol.iterator]();it.next(); // { value: 1, done: false }it.next(); // { value: 2, done: false }it.next(); // { value: 3, done: false }it.next(); // { value: undefined, done: true }
