ES6 let和const命令

let和const命令

let

let命令与var类似,但是所声明的的变量只能在let所在的代码块内有效,let不存在变量提升

  • let的块作用域
{
  let a = 1;
  var b = 2;
}
a //报错, 离开了块级作用域let所声明的变量不可访问
b //2
  • let不存在变量提升
console.log(a) //报错
console.log(b) //undefined var声明的变量存在变量提升
let a = 1;
var b = 2;
  • let的暂时性死区
var a = 1
if(true){
  a = 'abc' //报错,在 {}块级作用域下变量a被let声明,变量a不再受外部影响
  let a;
}
  • let用于for循环
for(let i = 0; i < arr.length; i++){}

块级作用域

简单理解的话就是ES6{}块级作用域替代ES5的立即执行函数(匿名函数)

// 立即执行函数的写法
(function () {
  ...
  ...
}());
//块级作用域的写法
{
   ...
  ...
}

const

  • const声明的是常量,声明后立即初始化不可再次赋值改变。
const a;
a = 1 
a //undefined
  • 对于符合类型的如{},[],const命令赋值的变量只是地址, 该地址的数据可以改变
const obj = {}
obj.a = 1;
obj.a //1 变量指向的地址的数据可以改变
obj = {} //报错,  这里给变量重新赋值新的地址报错
const arr = [];
arr.push(1); //给变量指向的地址添加数据
arr.length = 0; //给变量指向的地址更改属性
arr = [1,2];    // 报错 变量的地址不可指向其他地址

const的作用域与let命令相同:
1只在声明所在的块级作用域内有效。
2const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
3const声明的常量,也与let一样不可重复声明。

你可能感兴趣的:(ES6 let和const命令)