- 內(nèi)部有循環(huán),函數(shù)調(diào)用時,yield已經(jīng)展開,后續(xù)對集合的修改不會影響yield遍歷,這個時候修改子迭代器,會影響遍歷
let a = [ 'a'];
function * foo() {
for(let i in a)
yield i;
return 'foo'
}
let it = foo();
console.log(it.next())
a.push('b')
console.log(it.next())
a.push('c')
console.log(it.next())
console.log(it.next())
// {value: '0', done: false}
// {value: 'foo', done: true}
// {value: undefined, done: true}
- 可以嵌套子迭代器
let a = [ 'a'];
function * foo() {
yield* a
console.log("End foo")
return 'foo'
}
let it = foo();
console.log(it.next())
a.push('b')
console.log(it.next())
a.push('c')
console.log(it.next())
console.log(it.next())
// {value: 'a', done: false}
// {value: 'b', done: false}
// {value: 'c', done: false}
// {value: 'foo', done: true}
- 有return, return做為最后一個有值的遍歷,并且done為true
- 返回值之間的代碼不會重復執(zhí)行
function * foo() {
console.log('a')
yield 'a';
console.log('b')
yield 'b';
console.log('c')
yield 'c';
}
for (let v of foo()){
console.log(v);
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。