PurpleMongrel
PurpleMongrel

Reputation: 152

next() behaves differently directly on generator vs variable with generator value

Why is it that I get different results when calling next() directly on a generator, versus on a variable with the same generator assigned as its value?

All code/output below.

Below is the generator, plus variable declaration/assignment:

function* gen() {
  yield 1;
  yield 2;
  yield 3;
};

let genVar = gen();

First code snippet:

let first = genVar.next();
console.log(first);
second = genVar.next();
console.log(second);  

Output of first code snippet:

{ value: 1, done: false }
{ value: 2, done: false }

Second code snippet:

let one = gen().next();
console.log(one);
two = gen().next();
console.log(two);

Output of second code snippet:

{ value: 1, done: false }
{ value: 1, done: false }

My best guess at the moment is this has something to do with assignment by value/reference?

Upvotes: 1

Views: 73

Answers (1)

IAmDranged
IAmDranged

Reputation: 3020

Anytime you execute the generator function, you create a brand new generator object that allows to iterate over the steps of the generator function from the start.

So in your second example, you actually create two different iterators.

Upvotes: 2

Related Questions