var、let、const 和暂时性死区有什么关系?
参考答案
var 具有函数作用域,声明在执行前被建立并初始化为 undefined;赋值仍在代码执行到相应位置时发生。let 和 const 具有块级作用域,绑定在进入作用域时就存在,但初始化前不能访问,这段区域称为暂时性死区。
const 要求声明时初始化,限制的是绑定重新赋值,不会自动冻结对象。函数声明的提升行为还受模块、严格模式和块级位置等条件影响,应优先讨论清晰的函数或模块作用域例子。
循环中的 let 为每次迭代提供独立绑定,因此异步回调可以捕获各自的迭代值。不要把 let 的行为概括为“完全没有提升”;更准确的说法是初始化前不可访问。