一、let
1.let只在当前代码块有效,拥有块级作用域。
2.let 不存在变量提升。
3.变量i
是let
声明的,当前的i
只在本轮循环有效,所以每一次循环的i
其实都是一个新的变量。
二、const
1.const
声明一个只读的常量。一旦声明,常量的值就不能改变,这意味着,const
一旦声明变量,就必须立即初始化,不能留到以后赋值。
2.const声明变量的值是可改变的,只是变量指向的那个内存地址不可改变。
三、
1.ES5 只有两种声明变量的方法:var
命令和function
命令。ES6 除了添加let
和const
命令,另外两种声明变量的方法:import
命令和class
命令。
2.var
命令和function
命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let
命令、const
命令、class
命令声明的全局变量,不属于顶层对象的属性。