ES6 允许按照一定模式, 从数组和对象中提取值, 对变量进行赋值, 这被称为解构.
解构有三种类型:
1. 数组的解构赋值
(1)简单的数组解构
以前, 我们给变量赋值是直接单个指定值, 比如:
- let a=0;
- let b=1;
- let c=2;
数组解构的方式来进行赋值, 如下:
let [a,b,c]=[1,2,3];
总结: 从数组中提取值, 按照位置的对象关系 (次序) 对变量赋值.
(2)数组模式和赋值模式统一
可以简单的理解为等号左边和等号右边的形式要统一, 如果不统一解构将失败. 相关代码如下:
let [a,[b,c],d]=[1,[2,3],4];
如果等号两边形式不一样, 很可能获得 undefined 或者直接报错.
(3)解构的默认值
解构赋值是允许你使用默认值的, 相关代码如下:
- let [foo = true] =[];
- console.log(foo); // 控制台打印出 true
undefined 和 null 的区别:
*undefined 相当于什么都没有.
*null 相当于有值, 但值为 null.
2. 对象的解构赋值
对象的属性没有次序, 变量必须与属性同名, 才能取到正确的值.
(1)圆括号的使用
如果在解构之前就定义了变量, 这时候再解构会出现问题, 而且编译就会报错.
- let foo;
- {
- foo
- } ={
- foo:'i love you'
- };
- console.log(foo);
要解决报错, 使程序正常, 我们这时候只要在解构的语句外边加一个圆括号就可以了.
- let foo;
- ({
- foo
- } ={
- foo:'i love you'
- });
- console.log(foo); // 控制台输出 i love you
3. 字符串解构
字符串解构, 此时字符串被转换成了一个类似数组的对象.
- const [a,b,c,d,]="love";
- console.log(a);//l
- console.log(b);//o
- console.log(c);//v
- console.log(d);//e
学习参考链接为: http://jspang.com/post/es6.html#toc-696 .
来源: http://www.bubuko.com/infodetail-2868887.html