let和const的区别

  • let和const都是es6的一个语法
  • es6之前都是用var关键字声明变量的
  • var声明的变量会挂载到全局上而let和const不会
  • let和const不存在变量提升,都存在暂时性死区,会形成块级作用域
  • let声明的变量可以修改
  • const声明的常量不能修改 而const声明的引用数据类型可以修改,那是因为引用数据类型在栈里面存储的是一个16进制的地址,而引用数据类型修改的不是地址,因为js引用数据类型是存储在堆里面的,所以是修改的堆里面的数据

总结:

1、ES6中的命令,声明的变量或常量不再是全局变量的属性或方法。

2、块级作用域,块之外访问会报错
3、不能变量提升,在声明之前访问会报错

4、暂时性死区,所声明的变量或者常量会绑定到该区块,不再受外部影响

5、let声明的是变量,const声明的是常量,只读,修改值会报错,const保存的是内存地址,可以给对象或数组添加属性或元素,但是不能重新复写。

6、都不能重复声明