ES6

ES6深入浅出之let和const

Posted by weite122 on 2018-11-09

let 命令用法

1. let不存在变量提升

1
2
console.log(a); //ReferenceError: a is not defined
let a = 1;

2. let的作用域在最近的{}之间

1
2
3
4
{
let a = 1
}
console.log(a) //ReferenceError: a is not defined

3. let不允许重复声明同一个变量

1
2
let a = 1
let a = 2 //Uncaught SyntaxError: Identifier 'a' has already been declared

4. let 存在暂时性死区

  • 只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
1
2
3
4
5
6
var tmp = 123;

if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}

const 命令用法

1. const声明一个只读的常量。一旦声明,必须在声明时立马赋值,常量的值就不能改变。如果声明的是对象,可以改变对象的属性。因为声明对象保存的是地址,改变对象属性并不会改变它的地址。

1
2
3
4
const PI = 3.1415;
PI // 3.1415

PI = 3;// TypeError: Assignment to constant variable.

2. 与let一样,不能重复赋值。
3. 与let一样,先声明后使用。
4. 与let一样,const的作用域就在最近的{}之间。