柚子讴歌的博客

es6学习第一篇

2018/01/23
es6学习第一篇

后续会持续更新

一、let命令

1、let命令用来声明变量,用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效(我的理解感觉有点像js中的局部变量

1
2
3
4
5
6
{
let a=10;
var b=1;
}
a // a is not defined
b // 1

2、let在循环中可以正常使用,但是只在循环内部有效,在外边引用会出错

1
2
3
4
for (let i = 0; i < 10; i++) {
//...
}
alert(i); // i is not defined

3、let不允许在同一个域内重复声明一个变量

1
2
3
4
5
6
7
8
9
function func() {
let a = 10;
var a = 1;
}
function func() {
let a = 10;
let a = 1;
}
二、const命令

1、const声明一个只读的常量。一旦声明,常量的值就不能改变

1
2
3
4
const PI = 3.1215;
PI //3.1415
PI = 3; // TypeError:Assignment to constant variable

2、const一旦声明变量,就必须初始化,不能在后面赋值,另外对const来说,只声明不赋值会出错。

1
2
const foo;
// SyntaxError:Missing initializer in const declaration

3、const只在声明所在的块级作用域内有效。

1
2
3
4
if(true) {
const MAX = 5;
}
MAX // Uncaught ReferenceError:Max is not defined

4、const声明的常量,也与let一样不可重复声明

1
2
3
4
5
var message = "Hello!";
let age = 25;
//以下两行都会报错
const message = "Goodbye!";
const age = 30;

let与const的区别:let是变量,const是常量,只需要定义的不用改变的值就用const

三、数组的解构赋值

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构

ES6允许写成下面这样:

1
let [a,b,c] = [1,2,3];

上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值,这种写法属于“模式匹配”:只要等号两边的模式相同,左边的变量就会被赋予对应的值。

如果解构不成功,变量的值就等于underfined

另一种情况是不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组,这种情况下,解构依然可以成功

1
2
3
4
5
6
7
8
let [x,y] = [1,2,3];
x // 1
y // 2
let [a,[b],d] = [1,[2,3],4];
a // 1
b // 2
d // 4

如果等号的右边不是数组,那么将会报错

1
2
3
4
//报错
let [foo] = 1;
let [foo] = false;
let [foo] = {};
CATALOG
  1. 1. 一、let命令
  2. 2. 二、const命令
  3. 3. 三、数组的解构赋值