[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/yield [Back]  [Original]

yield - JavaScript | MDN

MDN Web Docs

View in English Always switch to English

yield

20169

yield

function* foo(index) {
  while (index < 2) {
    yield index;
    index++;
  }
}

const iterator = foo(0);

console.log(iterator.next().value);
// Expected output: 0

console.log(iterator.next().value);
// Expected output: 1

[rv] = yield [expression];
expression

undefined

rv

next()

yield yield return

yield IteratorResult value donevalue yield done false

yield next() next()

  • yield next() yield
  • throw
  • IteratorResult value undefined done true
  • return IteratorResult value return done true

next() yield

yield Generator.prototype.next()

next() yield yield

yield

js
function* countAppleSales() {
  const saleList = [3, 7, 5];
  for (let i = 0; i < saleList.length; i++) {
    yield saleList[i];
  }
}

js
const appleStore = countAppleSales(); // Generator { }
console.log(appleStore.next()); // { value: 3, done: false }
console.log(appleStore.next()); // { value: 7, done: false }
console.log(appleStore.next()); // { value: 5, done: false }
console.log(appleStore.next()); // { value: undefined, done: true }

next(value) rv = yield expression step next() next()

js
function* counter(value) {
  let step;

  while (true) {
    step = yield value++;
    if (step) {
      value += step;
    }
  }
}

const generatorFunc = counter(0);
console.log(generatorFunc.next().value); // 0
console.log(generatorFunc.next().value); // 1
console.log(generatorFunc.next().value); // 2
console.log(generatorFunc.next().value); // 3
console.log(generatorFunc.next(10).value); // 14
console.log(generatorFunc.next().value); // 15
console.log(generatorFunc.next(10).value); // 26

ECMAScript 2027 LanguageSpecification
# prod-YieldExpression


Web Proxy Viewer  |  New URL  |  Original Page