es6解构简述

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构
一、数组的解构赋值
完全解构:左边的变量和右边的值一一匹配的关系

let [a,b,c] = ['tom',20,true];
console.log(a,b,c);//tom 20 true

不完全解构:左边的变量只匹配右边值的一部分

let [a,b,c] = ['tom',20,true,11,[]];
console.log(a,b,c);//tom 20 true

解构不成功: 左边的一部分变量匹配右边的值,剩下的变量为undefined

let [a,b,c,d,e] = [1,2,3];
console.log(a,b,c,d,e);//1 2 3 undefined undefined

集合解构

let [a,b,[...c]] = [1,2,[3,4,5]];
console.log(a,b,c);//1 2 [ 3, 4, 5 ]

如果左边的变量有默认值,只要变量的内容发生改变,那么默认值就会被覆盖,当变量匹配到的值为undefined的时候,默认值才会生效

let [a=4,b=5,c=6,d=7] = [1,2];
console.log(a,b,c,d);//1 2 6 7

默认值也可以为函数

let f = () =>{
    return 2
}
let [x,y = f()] = [1]; 
console.log(x,y);//1 2

数组嵌套对象

let [a,{username:user}] = ['hello',{username:'tom'}];
console.log(a,user);//hello tom

二、对象的解构赋值

let {a:a,b:b} = {a:10,b:20};
console.log(a,b);//10 20

如果属性名和变量名相同可以进行简写

let {a,b} = {a:10,b:20};
console.log(a,b);//10 20

如果变量名与属性名不同,则需要注意值赋给了谁

let {a:c,b:d} = {a:10,b:20};
console.log(c,d);//10 20

嵌套解构

let obj = {p:['Hello',{y:'World'}]}; 
 let {p:[x,{y}]} = obj;
 console.log(x,y) ;//Hello World

三、字符串的解构赋值
解构时,字符串被转换成了一个类似数组的对象

let [a,b,c,d,e]='hello';
console.log(a,b,c,d,e);//h e l l o

也可以对数组的属性解构

let {length:len}='hello'; 
console.log(len);//5
let {trim} = 'hello';
console.log(trim === String.prototype.trim);//true

四、数值和布尔值解构
无法被解构,不具备迭代器

let {a,b,c} = 123;
console.log(a,b,c);//undefined undefined undefined
let {a,b,c} = true;
console.log(a,b,c);//undefined undefined undefined
let [a,b,c] = 123;
console.log(a,b,c);//报错is not iterable
let [a,b,c] = true;
console.log(a,b,c);//报错is not iterable

五、函数参数的解构赋值

let add = ({a,b}) =>{
    return a+b
}
let res = add({a:1,b:1});
console.log(res);//2

解构中用来交换两个变量的最简单的方法:

let a = 1;
let b = 2;
[a,b] = [b,a];
console.log(a,b);//2 1

注意let b=2后面一定要加分号,不然会报错。

ES6解构赋值的好处有以下几点: 1. 简化代码:ES6解构赋值可以让我们更简洁地从数组或对象中提取值,并将其赋给变量。这样可以减少冗余的代码,使代码更加简洁易读。 2. 提高可读性:通过使用解构赋值,我们可以清晰地表达出我们想要提取的值的含义,使代码更易于理解和维护。 3. 方便的交换变量值:使用解构赋值可以方便地交换两个变量的值,而不需要使用额外的中间变量。 4. 快速提取对象属性:解构赋值可以快速提取对象中的属性,并将其赋给变量。这样可以方便地访问和操作对象的属性。 5. 函数参数的灵活应用:解构赋值可以用于函数的参数中,可以方便地从传入的对象或数组中提取所需的值,使函数的参数更加灵活。 6. 处理JSON数据:解构赋值可以方便地从JSON数据中提取所需的值,使得处理JSON数据更加方便快捷。 7. 支持默认值:解构赋值可以为变量设置默认值,当提取的值不存在时,可以使用默认值来代替,避免出现undefined的情况。 8. 多层嵌套解构ES6解构赋值支持多层嵌套的解构,可以方便地从复杂的数据结构中提取所需的值。 9. 可以与扩展运算符结合使用:解构赋值可以与扩展运算符(...)结合使用,可以方便地提取数组或对象中的部分值,并将其与其他值合并或进行其他操作。 总之,ES6解构赋值可以使我们的代码更加简洁、可读性更高,并且提供了更多的灵活性和便利性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值