先上代码: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 回答
GCT1015
TA贡献1827条经验 获得超4个赞
console.log([...numbers()])等同于leta=[];for(letnofnumbers()){a.push(n);}console.log(a);明白没?
慕田峪9158850
TA贡献1794条经验 获得超8个赞
额,第一个输出和第二个输出的不是同一种东西,第一个输出的是扩展运算符转换之后的数组,而第二个则是输出每次调用Generator之后返回的值,如果要跟第一个等价的话,应该是下面这段代码.vararr=[]for(letnofnumbers()){arr.push(n)}console.log(arr)
添加回答
举报
0/150
提交
取消
