let 与 const 心智模型:
-
let
与const
分别是变量与常量的块级声明关键字; -
其主要目的是为了约束开发者编写出逻辑更加清晰,阅读性更好的代码;
-
它们体现了JavaScript的“块级作用域”;
let 与 const 共同特性:
-
块级声明:
{}
之内有效,之外被销毁; -
没有变量声明提升机制,且存在暂时性锁区(Temporal Dead Zone):
-
禁止重复声明
-
全局块作用域绑定
-
循环中的块作用域绑定
const 的特性:
- const 变量值不可更改
暂时性锁区: JavaScript引擎在扫描代码发现变量声明时,只有两种处理方式:
-
遇到
var
声明:将它提升到作用域顶部; -
遇到
let
和const
声明:将声明放到TDZ中(访问TDZ中的变量会触发运行时错误,只有执行过变量声明语句后,变量才会从TDZ中移出,然后才能正常访问);