ES6之let
ES6新增了let命令,这个命令的用法类似于var
基本用法
//用var声明的变量
var a = 1;
//用let声明的变量
let b = 2;
- 作用域
{
//用var声明的变量
var a = 1
//用let声明的变量
let b = 1
}
console.log(a) // 这里输出 1
console.log(b) // 报错 b is not defined
- 这里说明一个{}代表一个代码块,在代码块之外调用两个变量,let报错,var返回正确的值,let只在它所在的代码块有效
- 不存在变量提升
console.log(a) // undefined
console.log(b) // 报错 b is not defined
//用var声明的变量
var a = 1
//用let声明的变量
let b = 1
- 上面的代码的执行顺序是这样的
var a;
console.log(a) // undefined
console.log(b) // 报错 b is not defined
//用var声明的变量
a = 1
//用let声明的变量
let b = 1
- 暂时性死区
let a = 1
{
a = 2 //报错
let 2
}
- 在ES6 中,明确规定,如果区块内存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明变量前,对变量进行赋值的就会报错。
- 不允许重复声明
//报错
{
let a = 1
let a = 2
}
//报错
{
let a = 1
var a = 2
}