ES6 的解构赋值

数组的解构赋值
var [a, b, c] = [1, 2, 3];
console.log(a); //1
console.log(b); //2
console.log(c); //3

ES6 中允许变量赋值按照一定模式,从数组中提取值对变量进行赋值。且需要一一对应

var [a, b, c] = [1, 2];
console.log(a); //1
console.log(b); //2
console.log(c); //undefined

当等号右边数组只有 2 个值时,a 和 b 会被正确赋值,剩下的 c 找不到对应的值,即返回undefined

结构失败,值为 undefined

解构赋值还允许变量拥有初始赋值,即默认值

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

当 c 进行解构赋值时,并没有值可以进行赋值操作所以应为undefined,但 c 拥有默认值3,所以最后打印结果c=3.

当既有默认值,又有匹配值的时候呢?

var [a, b, c = 3] = [1, 2, 7];
console.log(a); //1
console.log(b); //2
console.log(c); //7

由于解构成功,c 对应的不是 undefined,默认值 3 会被新值覆盖( 3 => 7)

对象解构赋值

不光是数组可以解构赋值,对象也可以。
但是与数组不同是的,在写法上稍微需要谨慎些

在对对象进行解构赋值时,一定要注意属性名与变量名相同!

正确写法:

var obj = {
  a: function () {
    return 1;
  },
  b: '你好'
};
let { a, b } = obj;
console.log(a); //ƒ () {return 1;}
console.log(b); //你好

错误示范

var obj = {
  aa: function () {
    return 1;
  },
  bb: '你好'
};
let { a, b } = obj;
console.log(a); //undefined
console.log(b); //undefined

对象解构赋值也同样可以有默认值

var obj = {
  b: '你好'
};
let { a = 3, b } = obj;
console.log(a); //3
console.log(b); //你好

变量声明语句不能使用圆括号进行解构

//不可以
let [(a)]=[3]
//可以
let a;
[(a)] = [3];
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、付费专栏及课程。

余额充值