CodeQL 文档

在时间死区访问 let 绑定变量

ID: js/variable-use-in-temporal-dead-zone
Kind: problem
Security severity: 
Severity: error
Precision: very-high
Tags:
   - portability
   - correctness
Query suites:
   - javascript-security-and-quality.qls

点击查看 CodeQL 仓库中的查询

使用 let 声明的变量的作用域是其最内层的封闭块语句、循环或函数。与使用 var 声明的变量不同,使用 let 声明的变量不会提升到其作用域的顶部,这会导致一个代码区域,在该区域中变量在作用域内,但尚未声明。在所谓的“时间死区”内访问 let 绑定变量,一些遗留实现允许这样做,但在 ECMAScript 2015 中是非法的。

建议

let 声明移动到其作用域的开头。

示例

在以下示例中,x 在其声明之前初始化

function f() {
    x = 23;
    let x;
}

声明应按如下方式移动

function f() {
    let x;
    x = 23;
}

参考

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