📜  JavaScript | Generator.prototype.return() 方法(1)

📅  最后修改于: 2023-12-03 15:16:07.728000             🧑  作者: Mango

JavaScript | Generator.prototype.return() 方法

Generator 函数是 ES6 中新引入的一种函数类型,可以用于生成迭代器(Iterator)对象。Generator 函数用 function* 声明,可以使用 yield 关键字来暂停函数执行并返回一个值。

Generator.prototype.return() 方法是用来结束 Generator 函数并返回给定的值,返回结果是迭代器对象的 done 属性为 true 和 value 属性为指定的值。

语法
generator.return(value)

参数:

  • value(可选):结束 Generator 函数时要返回的值。如果省略此参数,则 value 属性为 undefined。

返回值:

  • 迭代器对象的 done 属性为 true 和 value 属性为指定的值。
示例
function* createCounter() {
  let count = 0;
  while(true) {
    let reset = yield count;
    if(reset) {
      count = 0;
    } else {
      count++;
    }
  }
}

let counter = createCounter();

console.log(counter.next().value); // 0
console.log(counter.next().value); // 1
console.log(counter.return(10)); // { value: 10, done: true }
console.log(counter.next().value); // undefined

在上面的例子中,我们定义了一个 createCounter Generator 函数来计数器,一开始 count 的值为 0。当 reset 为 true 时,我们将 count 的值重置为 0;否则,将 count 的值加 1。我们使用 counter.next() 方法来获取当前计数器的值,并模拟重置计数器的操作,使用 counter.return() 方法来结束函数并返回一个值。

最后,我们继续调用 counter.next(),此时返回值的 value 属性为 undefined,说明此时 Generator 函数已经结束。

总结

Generator.prototype.return() 方法用于结束 Generator 函数并返回指定的值。我们可以在创建 Generator 函数时使用语句如 let iterator = createGenerator() 来获取迭代器对象 iterator,然后使用 iterator.next() 函数来获取生成器函数生成的值。在合适的时候使用 iterator.return() 来结束函数的执行。需要注意的是,一旦使用 return 方法,Generator 函数的 done 属性将会变为 true,之后再调用 next 方法时将会返回 undefined,从而结束整个迭代器对象的迭代。