如题:
第一种for...of遍历
```
let values = [1, 2, 3];
for (let num of values) {
console.log(num); // 1 2 3
}
```
第二种手动调用
```
let values = [1, 2, 3];
let iter = values[Symbol.iterator]();
iter.next(); // {value: 1, done: false}
iter.next(); // {value: 2, done: false}
iter.next(); // {value: 3, done: false}
iter.next(); // {value: undefined, done: true}
```
请问两种方法都调用迭代器,为何最后结果不一致。for...of最后并没有输出undefined
这,我只能说语言实现如此。而且,在手动调用中,你可以无限次调用next。。
是我理解错了。迭代的时候会先判断done是否为true,若为true则终止循环且不再输出value:undefined。