Javascript 使用的生成器的部分迭代。。。属于

Javascript 使用的生成器的部分迭代。。。属于,javascript,generator,Javascript,Generator,下面是一个test函数,它使用for从序列中获取第一项。。。属于循环。然后它会得到第二项: 功能测试(iterable){ 常量迭代器=iterable[Symbol.iterator](); for(迭代器的常量项){ console.log('First:'+项); 打破 } for(迭代器的常量项){ console.log('Second:'+项); 打破 } } 功能测试2(可测试){ 常量迭代器=iterable[Symbol.iterator](); const item=ite

下面是一个
test
函数,它使用
for从序列中获取第一项。。。属于
循环。然后它会得到第二项:

功能测试(iterable){
常量迭代器=iterable[Symbol.iterator]();
for(迭代器的常量项){
console.log('First:'+项);
打破
}
for(迭代器的常量项){
console.log('Second:'+项);
打破
}
}
功能测试2(可测试){
常量迭代器=iterable[Symbol.iterator]();
const item=iterator.next();
如果(!item.done){
console.log('First:'+item.value);
}
for(迭代器的常量项){
console.log('Second:'+项);
打破
}
}
常量对象={
*[符号.迭代器](){
收益率*[1,2,3,4,5];
}
}
log('test:');
测试([1,2,3,4,5]);
试验(obj);
console.log('\ntest2:');
测试2([1,2,3,4,5]);

test2(obj)我认为这是预期的bahavior-迭代可以用另一种方式分解,例如迭代器可以使用参数和内部条件生成您需要的任意多的oputput。还有其他方法可以实现中断调用迭代器.next(),只要您需要。最后一个方法迭代从生成器生成的数组,比如
[…myGenerator()]
,我认为在
中中断迭代对于。。。,并在以后继续。至少对于阵列来说,它工作得很好。同意
test2()
看起来比
test()
好。这是停止迭代的首选方法。我无法解释
test()
函数的行为并试图理解它结果与
测试中的结果相同([1,2,3,4,5])[…obj]
只是使用生成器创建的普通数组。因此,它相当于场景中的
[1,2,3,4,5]
。您可能需要运行
节点——在test和test2上打印字节码yourSnippet.js
,并区分两个输出以进一步检查案例,我不知道答案。