先上代码:
function* numbers () {
yield 1
yield 2
console.log('hint')
return 3
yield 4
}
console.log([...numbers()])
// 输出
// hint
// [ 1, 2 ]
for (let n of numbers()) {
console.log(n)
}
// 输出
// 1
// 2
// hint
这是我在学习阮老师的es6的“Generator 函数的语法”这一章时发现扩展运算符...在遍历有输出或有return返回时的generator函数时的输出顺序跟我的预想不一样,而for...of则比较符合直觉。
按阮老师的说法“for...of循环、扩展运算符(...)、解构赋值和Array.from方法内部调用的都是遍历器接口”,那输出顺序应该是一致的呀?
请有心人帮忙解释。
console.log([...numbers()])
等同于
明白没?