同様に動作するようにイテレーターとジェネレーターを作成できます。JavaScript for forループの反復子とジェネレーターの相違点
for of
ループでブレークまたはリターンステートメントが含まれていると、それらの動作が異なる理由は何ですか?
ループの終了後もイテレータが終了している間に、ジェネレータは終了します。
function *createGenerator() {
for (let i=0; i<5; i++) {
yield i;
}
}
function createIterator() {
const arr = [1, 2, 3, 4, 5];
return arr[ Symbol.iterator ]();
}
function runForOfLoopOn(iterable) {
for (const item of iterable) {
if (item == 2) {
break;
}
}
}
const iterator = createIterator();
const generator = createGenerator();
runForOfLoopOn(iterator);
runForOfLoopOn(generator);
console.log('Iterator is done:', iterator.next().done);
console.log('Generator is done:', generator.next().done);
ありがとうございます。このような良い答えはすばやく期待できませんでした:)私はhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocolsでドキュメントを見てきました。イテレータの 'return'メソッドさて、あなたのおかげで、私はそれを知るでしょう:) –