非生成器函数中的 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++;
}