📜  JavaScript 生成器完整参考(1)

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

JavaScript 生成器完整参考

JavaScript 生成器是一种方便快捷地生成特定类型对象的工具。它们可以大大简化代码编写过程,提高代码重用性和可维护性。以下是 JavaScript 生成器的完整参考。

主要类型

JavaScript 生成器通常用于创建以下类型的对象:

数组
function* generateArray(length) {
  let i = 0;
  while (i < length) {
    yield i++;
  }
}
const myArray = [...generateArray(5)];
console.log(myArray);
// Output: [0, 1, 2, 3, 4]
对象
function* generateObject() {
  yield { name: 'John', age: 30 };
  yield { name: 'Mary', age: 25 };
  yield { name: 'Bob', age: 40 };
}
const objGenerator = generateObject();
console.log(objGenerator.next().value);
// Output: { name: 'John', age: 30 }
console.log(objGenerator.next().value);
// Output: { name: 'Mary', age: 25 }
字符串
function* generateString() {
  yield 'J';
  yield 'o';
  yield 'h';
  yield 'n';
}
const strGenerator = generateString();
let myString = '';
for (let char of strGenerator) {
  myString += char;
}
console.log(myString);
// Output: 'John'
常用方法

以下是生成器常用方法的详细说明。

next()

next() 方法返回由 yield 语句生成的下一个值。当到达生成器结尾时,done 属性将为 true。以下是一个示例:

function* generateNumber() {
  yield 1;
  yield 2;
  yield 3;
}
const numberGenerator = generateNumber();
console.log(numberGenerator.next());
// Output: { value: 1, done: false }
console.log(numberGenerator.next());
// Output: { value: 2, done: false }
console.log(numberGenerator.next());
// Output: { value: 3, done: false }
console.log(numberGenerator.next());
// Output: { value: undefined, done: true }
return()

return() 方法终止生成器并返回指定的值。以下是一个示例:

function* generateNumber() {
  yield 1;
  yield 2;
  yield 3;
}
const numberGenerator = generateNumber();
console.log(numberGenerator.next());
// Output: { value: 1, done: false }
console.log(numberGenerator.return(4));
// Output: { value: 4, done: true }
console.log(numberGenerator.next());
// Output: { value: undefined, done: true }
throw()

throw() 方法允许从生成器内部抛出一个错误。以下是一个示例:

function* generateNumber() {
  try {
    yield 1;
    yield 2;
    throw new Error('Error!');
    yield 3;
  } catch (e) {
    console.log(e.message);
  }
}
const numberGenerator = generateNumber();
console.log(numberGenerator.next());
// Output: { value: 1, done: false }
console.log(numberGenerator.next());
// Output: { value: 2, done: false }
console.log(numberGenerator.throw(new Error('Error!')));
// Output: Error!
// Output: { value: undefined, done: true }
总结

JavaScript 生成器是一种非常有用的工具,可以大大简化代码编写过程。它们可以用于创建数组、对象和字符串等各种类型的对象。生成器常用方法包括 next()、return() 和 throw()。开发人员可以根据应用场景选择合适的生成器和方法,以提高代码的重用性和可维护性。