在时间死区访问 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
使用 let
声明的变量的作用域是其最内层的封闭块语句、循环或函数。与使用 var
声明的变量不同,使用 let
声明的变量不会提升到其作用域的顶部,这会导致一个代码区域,在该区域中变量在作用域内,但尚未声明。在所谓的“时间死区”内访问 let
绑定变量,一些遗留实现允许这样做,但在 ECMAScript 2015 中是非法的。
建议¶
将 let
声明移动到其作用域的开头。
示例¶
在以下示例中,x
在其声明之前初始化
function f() {
x = 23;
let x;
}
声明应按如下方式移动
function f() {
let x;
x = 23;
}
参考¶
Mozilla 开发者网络:时间死区和 let 的错误.