ES6——解构赋值

解构赋值是对赋值运算符的扩展;目前用在数组和对象上,主要利用各自的数据结构特点,方便地将源对象的数据赋值给对应的目标变量;它可以有多种使用形式:

1,用在数组:

//数组的特点之一就是数组是个有顺序的列表;不管元素的大小排列,它总是按下标从小到大(从0到数组的length-1)---
//所以按顺序; 2 被赋值给a, 4被赋值给b;
//a 和 b是全局变量;
let [a, b] = [2, 4]; //解构赋值的便利;
console.log(a, b);
//2  4

//相当于:
// let a, b;
// [a, b] = [2, 4]; 
// console.log(a, b);
// //2 4

//可以填过不需要的元素-------
let[c, ,d] = [2, 5, 9];
console.log(c, d);
//2  9

//可以使用剩余运算,将剩下的元素集合在一个数组中---------------
//剩余运算符应该使用在最后一个变量
let[e, ...rest] = [4, 6, 9, 1, 0];
console.log(e, rest);
//4   [6, 9, 1, 0]

//可以使用默认值------------------------------
//undefined不同于null;undefined会被认为是没有赋值;
let[g = 9, h = 5, o, j = h] = [4, undefined, null];
console.log(g, h, o, j);
//4  5  null  5

2,用在对象:跟用在数组类似

//对象的特点之一是每个对象都有唯一的键名;
var obj = {a: 'hello', b: 'hi', c: 'test', d: {e: 'hola'}};
//可以跳过不需要的属性----------
let{a, b} = obj
console.log(a, b);
//'hello'  'hi'

//可以使用剩余运算符-------------
let{c, ...rest} = obj;
console.log(c, rest);
//'test'     {a: "hello", b: "hi", d: {e: 'hola'}}

//可以重命名----------
let{d: dd, d:{e}} = obj;
// console.log(d);//被重命名的属性名不会被声明,因此不能使用--------------
// //Uncaught ReferenceError: d is not defined
//第二个d(d:{e})只是用来标明哪个属性,它不会做声明,即不会声明变量d---------------------
console.log(dd, e);
//{e: "hola"}   "hola"

//当没有与之对应的属性名,不会报错-------------
let {m} = obj;
console.log(m);
//undefined

//可以有默认值,当没有与之对象的属性名时或属性值未undefined时,变量可以给默认值--------------
let{n = 67} = obj;
console.log(n);
//67

3,参考文档:

ES6解构赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值