let
let在ES6中是用来声明变量的
-
必须先声明后再使用
-
使用let声明变量的时候不可以重复声明,但可以重新赋值
当使用var声明的时候可以重复声明同一个变量,但是后声明的变量就会覆盖前面的,但是使用let的时候会报错 -
会出现暂时性死区的问题
什么是暂时性死区? 所谓的暂时性死区就是指使用let的时候在一个代码块中或是在一个函数内部声明,也就是块级作用域,在这个作用域以外的场景下去使用声明的这个变量是取不到值的,就像是形成了一个封闭的区间,在语法上称为暂时性死区 -
不能进行变量提升
const
const在ES6中用来声明常量
- 必须先声明后使用
- 有暂时性死区问题
- 不可以重复声明,也不可以重新赋值
- const这一点和let有区别,let是可以重新赋值,会替换之前赋值的内容,但const中,就像是一个固定的是指不可以发生改变,如果改变就会抛出错误,但是要注意,const属性并不是不可以修改
- 在基本数据类型中,比如
const x = 3.5;
将他在后面重新赋值x = 4
就会报错,所以基本额数据类型不可以修改
- 在引用数据类型中,因为const 声明的是一个引用数据类型,所以只是对应的是这个数据所在的指针,也就是一个地址,而我们在后面重新改变这个值的时候是直接修改的指针中的内容,而是没有修改这个指针的指向,所以const不会报错,所以说使用const声明的值并不是固定不能改的,分类型
- 不能进行变量提升