第一节 块级声明 let const
块级声明变量 let
- 一个函数内部
- 被一对花括号包裹
- 禁止重复声明,但在嵌套的作用域中可以,因为没有变量提升了嘛。
不会进行变量提升,如需要,需手抖在函数体头部声明变量。
声明常量const
- 与let一样都是块级声明变量
- const用来声明常量,一旦声明不可修改
- 必须在声明的时候被初始化,否则运行的时候报错
- 当使用const声明对象的时候,会阻止变量绑定,但是不会阻止修改对象成员。
- 与let一样不可以被重复声明。
暂时性死区(TDZ)
在代码快中使用
let
const
声明变量常量,会造成暂时性死区,即在执行到该声明语句之前,是无法访问该变量/常量的,即使是typeof
也会报错。特备注意是在代码块中会存在此特性
在代码块内使用let
const
声明的变量常量,在代码快外使用typeof
不会报错
再循环中使用let const
- 在循环内使用
let
声明i
避免在外面访问到 - 巧妙使用let 实现闭包的功能
for
循环中不要用const
声明'i' 在进行i++
时报错。- 在
for-in
for-of
循环中使用不会报错
全局块级绑定
使用
var
声明的全局变量会挂载到window
对象下,容易造成覆盖原对象中的成员。使用let
const
声明的全局变量不会挂载到window
对象下。
最佳实践
在默认情况下使用
const
,而只在你知道变量值需要被改变的情况下才使用let
这在代码中能确保基本层次的不可变性,有助于防止某些类型的错误。