1.数组的解构赋值

简单用法

{
// 旧
let a=1,b=3; //新
let [a,b]=[1,3]; console.log(a,b);// 1 3
}

只要等号两边的模式相同,左边的变量就会被赋予对应的值。

{
let a,b,c;
[a,b,c]=[1,2]
console.log(a,b,c);// 1 2 undifined
} {
let [a,b,c]=[1,,3];
a,b,c;//1 undefined 3
} {
let [a,b]=[1,[2,3]];
a;//1
b;//[2,3]
} {
let [a,...b]=[1,2,3];
a;//1
b;//[2,3]
} {
let [a, b, ...c] = [1];
a;//1
b;//undefined
c;//[]
} {
let [a,[b],c]=[1,[2,3],4]
a;//1
b;//2
c;//4
}

设置默认值

let [a='hello']=[];
a;//hello let [b='world']=['yes'];
b;//yes // ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。
let [c=13]=[undefined];
c;//13 let [d=12]=[null];
d;//null

实例

  • 交换两个变量的值
    let [a, b]=[2,3];
[a,b]=[b,a];
console.log(a);//3

对象的解构

常规用法

    let a,b;
({ a, b } = { a: 2, b: 3 })
console.log(a,b);//2,3; //变量名与属性名一致
let {name}={name:'小明',age:18};
console.log(name);//小明 // 变量名与属性名不一致
let {a:name,b:age}={a:'小明',b:18};
console.log(name,age);//小明 18

如果解构失败,变量的值等于undefined。

let {a}={b:2};
a;//undefined

多层嵌套

function fn() {
return {
name: '小明',
userList: [
{ name: '小红' }
]
}
} let res = fn();
let { name: person, userList: [{ name: otherPerson }] } = res; console.log(person, otherPerson);//小明 小红

如果解构模式是嵌套的对象,而且子对象所在的父属性不存在,那么将会报错。

let {a: {b}} = {b: 666};

设置默认值

let {a=1}={a:3};

最新文章

  1. iOS之小门道道
  2. 《Qt Quick 4小时入门》学习笔记3
  3. #error作用
  4. C#修改文件权限
  5. JS实现上传本地图片前先预览
  6. 多线程编程之Linux环境下的多线程(二)
  7. 从JetBrains公司产品给我的商业模式启示
  8. Java沙箱技术
  9. Math.random获得随机数
  10. java Socket 长连接 心跳包 客户端 信息收发 demo
  11. oracle数据库的一次异常起停处理。
  12. Contaminated Milk
  13. redis学习(一)——redis介绍及安装
  14. SharePoint 读取内容的插件之SharepointPlus
  15. Centos Linux 下Pycharm 安装
  16. 前端 html head meta
  17. BZOJ 4520: [Cqoi2016]K远点对(k-d tree)
  18. POJ-1681
  19. 使用Asset Pipeline管理rails生产环境静态资源实现步骤
  20. POJ 1523 SPF 求割点的好(板子)题!

热门文章

  1. Android 开发 MediaRecorder音频录制
  2. Ubuntu GitHub操作——创建仓库
  3. 转:五种I/O模型和select函数简介
  4. java.io.FileNotFoundException: E:\work\work (拒绝访问。)
  5. PAT甲级——A1066 Root of AVL Tree
  6. Jmeter安装与配置(第一篇)
  7. react使用swiper,解决添加点击事件首位图片点击失效,解决轮播按钮被覆盖问题
  8. goland破解
  9. Django项目:CRM(客户关系管理系统)--69--59PerfectCRM实现king_admin行内编辑
  10. js身份证号码验证(小程序版)