五十三.关键字 let和const

152 阅读1分钟

let

关键字let用于声明变量

与关键字var的区别:

1.不会隐式提前变量,在没有声明变量前访问变量会报错;

image.png

image.png

2.let声明的变量只在let命令所在的代码块内有效,具有作用域,声明的变量只在最靠近的一个代码块中(花括号内)有效。推荐在函数中使用let定义变量,而非var;

image.png

image.png

3.同一个作用域中let声明的变量名不能重名

image.png

image.png

image.png

image.png

const

const和let的用法相同:声明的变量不会隐式提升,声明的变量只在最靠近的一个代码块中(花括号内)有效,同一个作用域中声明的变量名不能重名。

但const区别在于声明一个只读变量,声明之后不允许改变。即const一旦声明必须初始化,否则会报错。

image.png

image.png

image.png

image.png

image.png

image.png

const声明引用数据的注意点

image.png

image.png

image.png

image.png

const声明的变量保存引用数据时,可以用变量操作这个数据容器中的数据,但是不能用变量直接修改数据容器的引用。

let和const有暂时性死区

image.png

image.png

image.png

image.png

1.  `var tmp = 123;`
1.  ``
1.  `if (true) {`
1.  `tmp = 'abc'; // ReferenceError`
1.  `let tmp;`
1.  `}`

代码块内如果存在let或者const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。let和const声明变量之前,直接对变量赋值会报错。所以这里并不会访问全局变量而是报错。凡是在声明之前就使用这些变量,就会报错。