[ES6] 变量的结构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构

数组的解构赋值

  1. 如果目标对象的结构不符合/不具备iterator接口,都将会报错
  2. 结构赋值可以有默认值,当数组中的值完全等于undefined,默认值才会生效

    let [a=1] = [];
    a //1
    
    // 相当于
    let [a=1] = [undefined];
    a // 1
  3. 可以嵌套使用

    let [a, [b],c] = [1, [2], 3];
    a  // 1
    b  // 2
    c  // 3
  4. 结构赋值内部使用 ===

对象的解构赋值

  1. 对象和数组的区别在于,数组通过位置来匹配,而对象是通过属性找到需要被解构的值。

  2. 变量使用嵌套进行结构时

let {a, b, b: {c}} = {a: 1, b: {c: 2}};
a // 1
b // {c: 2}
c // 2

上方b:在这里是模式,必须这样才可以引用到b,来对c进行解构

字符串解构赋值

会把字符串转换成类似数组的对象
所以可以得到字符串的长度

let [a, b, c, d] = 'abcd';
a //"a"
b // "b"
// ... 

let {length} = 'abcd';
length // 4

数字和布尔值的解构赋值

数字和布尔值在进行解构赋值时, 会被先转换为对象

let {toString} = 123;
toString === Number.prototype.toString;

undefined 和 null 不能转换为对象,所以解构赋值会报错 typeError

函数参数的解构赋值

function fun({a, b} = {a: 0, b: 0}){}

function fun({a = 0, b = 0}){}

// 两种是完全不同的意思

慎用圆括号

可以使用圆括号的情况只有一种:赋值语句的非模式部分,可以使用圆括号。

let b, d;
[(b)] = [3]; 
({ p: (d) } = {}); 
[(parseInt.prop)] = [3]; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值