为了账号安全,请及时绑定邮箱和手机立即绑定

有大佬遇到过这个问题吗:请教扩展运算符和for...of在遍历generator函数时的输出顺序为什么不一致?万分感谢

有大佬遇到过这个问题吗:请教扩展运算符和for...of在遍历generator函数时的输出顺序为什么不一致?万分感谢

慕娘9325324 2019-08-09 23:54:19
先上代码:function*numbers(){yield1yield2console.log('hint')return3yield4}console.log([...numbers()])//输出//hint//[1,2]for(letnofnumbers()){console.log(n)}//输出//1//2//hint这是我在学习阮老师的es6的“Generator函数的语法”这一章时发现扩展运算符...在遍历有输出或有return返回时的generator函数时的输出顺序跟我的预想不一样,而for...of则比较符合直觉。按阮老师的说法“for...of循环、扩展运算符(...)、解构赋值和Array.from方法内部调用的都是遍历器接口”,那输出顺序应该是一致的呀?请有心人帮忙解释。
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

console.log([...numbers()])等同于
leta=[];
for(letnofnumbers()){
a.push(n);
}
console.log(a);
明白没?
                            
查看完整回答
反对 回复 2019-08-09
?
慕容森

TA贡献1853条经验 获得超18个赞

额,第一个输出和第二个输出的不是同一种东西,第一个输出的是扩展运算符转换之后的数组,而第二个则是输出每次调用Generator之后返回的值,如果要跟第一个等价的话,应该是下面这段代码.
vararr=[]
for(letnofnumbers()){
arr.push(n)
}
console.log(arr)
                            
查看完整回答
反对 回复 2019-08-09
  • 2 回答
  • 0 关注
  • 425 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信