在JavaScript中,yield关键字通常用于生成器函数中,用于定义一个暂停点,可以将值传递给生成器的调用者。当生成器函数被调用时,它会返回一个迭代器对象,该对象可以用于控制生成器的执行。
yield作为参数工作时,可以通过生成器的迭代器对象向生成器传递值。具体步骤如下:
以下是一个示例代码:
function* generatorFunction() {
const value = yield 'First yield'; // 第一次调用next()时,返回'First yield',并暂停执行
console.log('Received value:', value); // 打印传递给yield的值
yield 'Second yield'; // 第二次调用next()时,返回'Second yield',并暂停执行
yield 'Third yield'; // 第三次调用next()时,返回'Third yield',并暂停执行
}
const generator = generatorFunction(); // 调用生成器函数,返回一个迭代器对象
console.log(generator.next()); // 输出: { value: 'First yield', done: false }
console.log(generator.next('Hello')); // 输出: Received value: Hello, { value: 'Second yield', done: false }
console.log(generator.next()); // 输出: { value: 'Third yield', done: false }
console.log(generator.next()); // 输出: { value: undefined, done: true }
在上面的示例中,第一次调用next()方法时,生成器函数执行到yield语句处暂停,并返回'First yield'作为value。第二次调用next()方法时,传递了'Hello'作为参数,生成器函数将该值赋给yield表达式,并继续执行,打印出'Received value: Hello',然后暂停并返回'Second yield'。依此类推,直到生成器函数执行完毕,返回{ value: undefined, done: true }。
请注意,yield关键字只能在生成器函数内部使用,不能在普通函数或箭头函数中使用。
领取专属 10元无门槛券
手把手带您无忧上云