ES6解构赋值

什么叫解构赋值?

ES6允许使用按照一定的模式 从数组或者对象中进行取值 对变量进行赋值 这个过程叫做解构赋值。

1、数组类型解构

let [a, b, c] = [1, 2, 3];
 console.log(a, b, c); //    1    2    3
结构分为4类

①完全结构

let [x, [y, z]] = [1, [2,[3]]];
console.log(x);//1
console.log(y);//2
console.log(z);//[3]

② 不完全解构的情况下 值有多余的

let y = [10,20];
console.log(y);//10

③不完全解构的情况下 没有给赋值 返回undefined

let [x,y] = [10];
console.log(x);//10
console.log(y);//undefined

④等号左右模式不匹配 等号右边的元素不能被遍历 那么就会报错

let [f] = false;
let [f] = NaN;
let [f] = "xdgfjn"; 
let [f] = {}; 
console.log(f);
//这些全都不能遍历 ,导致会报错

2、对象属性解构

let { x, y } = { x: "a", y : "b" }
console.log(x, y) //a   b

①对象结构 ,顺序可以打乱

let { x, y } = { y : "b" ,  x: "a" }
console.log(x, y) // a    b  

②结构对象可以重新命名

let { x: z, y } = { x: "a", y: "b" }
console.log(z, y) // a   b

③嵌套解构

let { x: {y}} = { x: { y: "a", z: "b" } }
console.log(y) // a

④ 默认值

let { x = "a", y: z = "b" } = { x: 1, y: 2}
console.log(x, z) // 1    2  

扩展

①结构赋值允许设置默认值 但是只有当变量的值严格等于undefined的时候 默认值才会生效

let[x, y = "a"] = ["w", ""];
console.log(x, y); //   w   a

②如果默认值是一个表达式 那么这个表达式是惰性求值的 只有到使用的时候 才回去计算或者调用

function f1() {
    return 123
        }

let [x = f1()] = [];
 console.log(x);//123

③默认值可以引用解构赋值中其他的变量 但是这个变量必须是声明过后的

let [x = 1, y = x] = [2, 3];
console.log(x, y); // 2  3


let [x = y, y = 4] = [];
console.log(x, y); // 报错   y没有提前声明

④扩展运算符和解构赋值相结合 可以同时给变量和数组赋值

 let[s, ...k] = [12, 15, 26, 45, 48];
 console.log(s);//12
 console.log(k);//[15,26,45,48]
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、付费专栏及课程。

余额充值