变量的解构和赋值

3 篇文章 0 订阅

数组的解构赋值(按次序来比对)

  • 完全解构
  • 不完全解构
  • 默认值(es6的解构是===的)

对象的解构赋值(按照位置来取值)

也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

    let { foo: baz } = { foo: "aaa", bar: "bbb" };
    baz // "aaa"
    foo // error: foo is not defined

    const node = {
        loc: {
            start: {
            line: 1,
            column: 5
            }
        }
    };

    let { loc, loc: { start }, loc: { start: { line }} } = node;
    line // 1
    loc  // Object {start: Object}
    start // Object {line: 1, column: 5}

上面代码有三次解构赋值,分别是对loc、start、line三个属性的解构赋值。注意,最后一次对line属性的解构赋值之中,只有line是变量,loc和start都是模式,不是变量。

字符串的解构赋值

数值和布尔值的解构赋值(会优先被转换为对象)

函数参数的解构赋值

圆括号问题(以下三种不得使用圆括号)

  • 变量声明语句
  • 函数参数
  • 赋值语句的模式

使用

  • 交换变量赋值
  • 从函数返回多个值
  • 函数参数的定义
  • 提取JSON的值
  • 函数参数的默认值
  • 遍历Map结构(任何部署了 Iterator 接口的对象,都可以用for…of循环遍历。Map 结构原生支持 Iterator 接口,配合变量的解构赋值,获取键名和键值就非常方便。)
  • 输入模块的指定方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值