【let】
- ES6新增let命令,用来声明变量,只在let命令所在的代码块中有效
- 不存在变量提升
- 变量提升:变量可以在声明之前使用,值为undefined
console.log(foo); //undefined
var foo = 2;
- 暂时性死区(TDZ):在代码块内,使用let声明变量之前,该变量不可用
if(tmp){
tmp = 'abc' //error
let tmp;
tmp = 123;
}
- 不允许重复声明
块级作用域(Block Scope)
- 使用 let 关键字来实现块级作用域。
- let 声明的变量只在 let 命令所在的代码块 {} 内有效,在 {} 之外不能访问。
【const】
- 声明一个只读的常量,一旦声明,常量的值就不能改变。
- 本质:const保证变量指向的内存地址所保存的数据不的改动
- 注意:
- 对于简单类型数据,值保存在变量指向的内存地址,等同于常量
- 对于复合类型的数据,变量指向的内存地址,保存的只是一个指向实际数据的指针,const只保证指针固定,而指向的数据结构是不是可变的,是不可控制的
【ES6声明变量的六种办法】
- var (ES5)
- function (ES5)
- let
- const
- import
- class
网友评论