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