1 let 声明的变量只能本身读取不能和var声明的混淆数组
2 只要有let声明的代码块里,在声明的变量前调用就会报错数据结构
3 同一个变量不能声明2次指针
const :code
1 做用域相似let对象
2 声明的常量不可改变,基本类型数据也是内存
3 const
实际上保证的,并非变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,所以等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const
只能保证这个指针是固定的,至于它指向的数据结构是否是可变的,就彻底不能控制了。所以,将一个对象声明为常量必须很是当心。作用域
4 可是能够改变对象性值和添加属性 不能赋值新的对象和数组字符串
5 若是真的想将对象冻结,应该使用Object.freeze
方法。io
顶层对象function
1var
命令和function
命令声明的全局变量,依旧是顶层对象的属性;另外一方面规定,let
命令、const
命令、class
命令声明的全局变量,不属于顶层对象的属性。