1. let声明的变量只在其声明块里有用,一个{}代表一个块
2. 可以在块级作用域中sheng声明函数,其相等于let,在块级作用域之外不可y引用
3. 在es6的环境中,在块级作用域中声明函数,其相当于var,会将声明的函数提升到块级作用域头部,应该避免在块级作用域中声明函数,如果需要,也是函数表达式,而不是函数声明
4. const声明一个只读的常量,一经声明,不可修改
5. const一位置声明就必须赋值,否则就会报错,而且const也是作用于块级作用域
6. const指的不是那个值不可变,而是保存这个值的内存地址不可变
7. const对于简单类型数据(数值、布尔、字符串)相当于的就是常量,而对于复合类型数据(数组、对象),保存的就是指向内存地址的指针,只要指针指向的地址不变,实际上的数组或者对象可以添加或删除属性、数组项
8. 可以使用Object.freeze()方法来冻结const常量,使复合类型数据不可变(地址不可变、值也不可变)
9. 在浏览器环境中,顶层对象指的是window
10. es6规定:使用var function声明的全局变量依旧是顶层对象的属性,而let const class声明的全局变量不再是顶层对象的属性