1.基本用法

let [a, b, c] = [1, 2, 3];
左右两边解构格式要保持一致。

2.默认值

let [x, y = 'b'] = ['a']; // x='a', y='b'
let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'

3,.字符串的解构赋值(这里只写了最简单的例子当然还有很多复杂的应用)

const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"

4.对象的解构赋值

解构不仅可以用于数组,还可以用于对象。

let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"

5.数值和布尔值的解构赋值

解构赋值时,如果等号右边是数值和布尔值,则会先转为对象。

let {toString: s} = 123;
s === Number.prototype.toString // true let {toString: s} = true;
s === Boolean.prototype.toString // true

解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于undefinednull无法转为对象,所以对它们进行解构赋值,都会报错。

let { prop: x } = undefined; // TypeError
let { prop: y } = null; // TypeError

6.函数参数的解构赋值

function add([x, y]){
return x + y;
} add([1, 2]); // 3

7.圆括号问题

只要有可能导致解构的歧义,就不得使用圆括号。
不能使用圆括号的情况
1)变量声明语句
// 全部报错
let [(a)] = [1]; let {x: (c)} = {};
let ({x: c}) = {};
let {(x: c)} = {};
let {(x): c} = {}; let { o: ({ p: p }) } = { o: { p: 2 } };
2)函数参数
// 报错
function f([(z)]) { return z; }
// 报错
function f([z,(x)]) { return x; }

(3)赋值语句的模式

// 全部报错
({ p: a }) = { p: 42 };
([a]) = [5];

可以使用圆括号的情况只有一种:赋值语句的非模式部分,可以使用圆括号。

[(b)] = [3]; // 正确
({ p: (d) } = {}); // 正确
[(parseInt.prop)] = [3]; // 正确
个人觉得就知道前面大概怎么用就可以了,后面复杂的情况暂时还没发现有很好的用途。

 

												

最新文章

  1. 制作bat脚本,抓取Android设备logcat
  2. 从零开始学 Java - Spring 一主多从、多主多从 数据库配置
  3. hdu 5719(Arrange)(冷静分析)
  4. iOS--二维码
  5. 【Linux】 JDK安装及配置 (tar.gz版)
  6. 测可用!ecshop立即购买和加入购物车按钮共存的方法
  7. Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 引自http://www.blogjava.net/TiGERTiAN/archive/2008/10/25/236519.html
  8. 说说C#和.NET的关系
  9. iOS之常用的判NULL的方法
  10. password加密问题
  11. Oracle COMMIT语句的处理顺序
  12. hbmy周赛1--D
  13. Python-待
  14. 面试简单整理之JVM
  15. LOJ114 k大(xiao)异或和(线性基)
  16. ubuntu 安装JDK1.6(jdk-6u45-linux-x64.bin)
  17. [SQL]查询最新的数据
  18. ZH奶酪:ionic+angularJS+cordova(FileTransfer)上传图片【移动端】
  19. HDU 3549 Flow Problem(最大流模板)
  20. Python_12-线程编程

热门文章

  1. Codechef SUMCUBE
  2. 任务30:RoutingMiddleware介绍以及MVC引入
  3. JAVA基础-面向对象07
  4. 洛谷 - P2762 - 太空飞行计划问题 - 最小割
  5. MongoDb 本机删除密码的方法
  6. win10家庭版安装
  7. P5168 xtq玩魔塔
  8. Spring 中的 18 个注解,你会几个?
  9. 1-17finally关键字
  10. Maven聚合模式