CodeQL 文档

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

点击查看 CodeQL 代码库中的查询

以前的 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++;
}

参考资料

  • ©GitHub, Inc.
  • 条款
  • 隐私