非生成器函数中的 yield¶
ID: js/yield-outside-generator
Kind: problem
Security severity:
Severity: error
Precision: very-high
Tags:
- maintainability
- language-features
- external/cwe/cwe-758
Query suites:
- javascript-security-and-quality.qls
以前的 SpiderMonkey 版本允许在未标记为生成器的函数中使用 yield
表达式。这不再受支持,也不符合 ECMAScript 2015。
建议¶
通过将 function
替换为 function*
,将封闭函数标记为生成器。
示例¶
以下示例使用 yield
生成索引序列,但函数 idMaker
未标记为生成器
function idMaker(){
var index = 0;
while(true)
yield index++;
}
这可以通过在 function
关键字后面添加星号来轻松修复
function* idMaker(){
var index = 0;
while(true)
yield index++;
}