首页 新闻 会员 周边

ES6 for...of调用Symbol.iterator和手动调用结果不一样

0
悬赏园豆:50 [已关闭问题] 关闭于 2017-08-21 09:08

如题:

第一种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

ES6
webLion200的主页 webLion200 | 初学一级 | 园豆:158
提问于:2017-08-19 12:04
< >
分享
所有回答(2)
-1

这,我只能说语言实现如此。而且,在手动调用中,你可以无限次调用next。。

幻天芒 | 园豆:37175 (高人七级) | 2017-08-20 14:54
0

是我理解错了。迭代的时候会先判断done是否为true,若为true则终止循环且不再输出value:undefined。

webLion200 | 园豆:158 (初学一级) | 2017-08-21 09:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册