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
关键字,将直接封闭的函数声明为生成器。