let与const都只在块级作用域内有效,即在同一个{}里面,命令声明都不会如同var一样提升,并且不能在同一个{}内声明相同的变量。
块作用域内可进行函数声明,但是在快作用域之外不可引用,与let类似。可把函数赋值给变量,然后再该作用域内进行调用(也是不会提升声明,所以必须在函数声明之后进行调用)。
const定义的常量需要进行初始化,并且在后面事不能进行修改的。
当const指向的是复合型的变量(对象、数组),此时从const指向的是数据所在的地址而不是数据,此时const声明出来的是可以进行数据赋值操作的,不变的只是地址。当定义的是一个数组地址(const
arr=[])时,不可以把其他数组赋值给arr,会报错,可以用push、pop进行arr的数组操作。
es6中的全局变量与顶层对象不再是同一级变量(es5中是等价的):
var a=1; //a,1
window.a=2; //window.a,2
var b=1; //b,1
window.b //undefined