- 块级作用域
- let 和 const 不存在变量提升
- 暂时性死区
- 不可重复声明
- let、const声明的全局变量不会挂在顶层对象下面
const声明变量的三个注意点:
1、const一旦声明,必须马上赋值
2、const声明的常量,值不能被改变。
3、const声明的引用数据类型(数组,对象等)内部的数据可以改变,但指针指向的地址不能被改变。
一、块级作用域
什么叫做块级作用域,其实就是{ }里面就叫做块级作用域
{
//块级作用域
let b = 7;
console.log(b);//7
}
console.log(b);//b is not defined
如上图,在{ }里面用let/const声明的b,在{}里面打印可以,但在外面就不行了!
二、变量提升
//var声明
console.log(a); //undefined
var a = 8
//let/const声明
console.log(b);//报错
let b =9
三、暂时性死区
只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。
var a = 10;