ES6规定暂时性死区和let、const语句不出现变量提升,暂时性死区的本质就是:只要进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量那一行代码出现,才可以获取和使用该变量
const声明一个只读变量,const声明到变量不得改变值,这意味着,const声明变量必须立即赋值,本质:
const保证的并不是变量的值不得变动,而是变量指向的那个内存地址所保存的数据不得改动,对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址。因此等同于常量。对于复合类型的数据,变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。因i将一个对象声明为常量必须非常小心
如果想将对象冻结,可以使用Object.freeze方法
ES6声明变量的六种方法
ES5只有两种声明变量的方法:var命令和function命令。ES6除了添加let和const命令,另外还有两种声明变量的方法:import命令和class命令
在ES5中,顶层对象(window、global)的属性赋值与全局变量赋值,是同一件事
在ES6中,var和function命令声明的全局变量,依旧是顶层对象的属性;另一方面,let、const、calss命令声明的全局变量,不属于顶层对象的属性