📅  最后修改于: 2023-12-03 15:01:45.504000             🧑  作者: Mango
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() 方法返回由 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() 方法终止生成器并返回指定的值。以下是一个示例:
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() 方法允许从生成器内部抛出一个错误。以下是一个示例:
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()。开发人员可以根据应用场景选择合适的生成器和方法,以提高代码的重用性和可维护性。