JavaScript 中意外的严格模式保留字“yield”

JavaScript 中意外的严格模式保留字“yield”

Unexpected strict mode reserved word ‘yield’ in JavaScript

“SyntaxError: Unexpected strict mode reserved word yield” 在
yield生成器函数之外使用关键字时发生。

要解决该错误,请通过在关键字后附加星号将函数标记为生成器function,例如function* generator() {}

意外的严格模式保留字产量

下面是错误如何发生的示例。

索引.js
function example() { // ⛔️ SyntaxError: Unexpected strict mode reserved word 'yield' yield 10; yield 15; }

我们yield在一个没有标记为
生成器的函数中使用了关键字。

添加星号以将函数标记为生成器

在关键字后添加星号function以将函数标记为生成器。

索引.js
// ✅ works function* generator() { yield 10; yield 15; } const gen = generator(); console.log(gen.next().value); // 👉️ 10 console.log(gen.next().value); // 👉️ 15
请注意,箭头函数不能声明为生成器。您只能yield在声明为生成器的命名函数中使用关键字。

直接封闭的函数必须标记为生成器

直接封闭的函数必须是一个生成器,您才能使用关键字yield

这是嵌套函数的示例。

索引.js
function generator() { return function* inner() { yield 10; yield 15; }; } const gen = generator()(); console.log(gen.next().value); // 👉️ 10 console.log(gen.next().value); // 👉️ 15

请注意,我们将inner函数标记为生成器而不是外部生成器。

这是因为我们在函数yield内部使用了关键字inner

为了能够使用yield关键字,将直接封闭的函数声明为生成器。