通过 ECMAScript 标准视角看 var、let 和 const 的区别
💡
原文英文,约3100词,阅读约需11分钟。
📝
内容提要
本文解释了var、let和const之间的区别,重点在于作用域、执行上下文的创建阶段和变量初始化。let和const关键字创建的变量在创建阶段被赋予未初始化的值,而var变量被赋予undefined值。let和const变量的作用域是词法环境,而var变量的作用域是变量环境。let和var变量可以有相同的名称,但const变量不能。
🎯
关键要点
- var、let和const之间的区别主要体现在作用域、执行上下文的创建阶段和变量初始化上。
- let和const创建的变量在创建阶段被赋予未初始化的值,而var变量被赋予undefined值。
- let和const变量的作用域是词法环境,而var变量的作用域是变量环境。
- let和var变量可以有相同的名称,但const变量不能。
- 执行上下文是代码执行的环境,分为全局执行上下文和函数执行上下文。
- 执行上下文有两个阶段:创建阶段和执行阶段。
- let和const声明的变量在其环境记录实例化时创建,但在词法绑定被评估之前不可访问。
- let和const变量在没有初始化器时被赋值为undefined,而const变量必须始终有初始化器。
- var声明的变量在创建阶段被初始化为undefined,通常称为提升。
- 在同一作用域内,var变量可以重复声明,而let和const变量不能。
➡️