javascript解构知识

javascript解构知识

解构

  1. 解构赋值时,左侧不一定必须时变量,它可以是任意形式的左值表达式

    let arr = []
    let user = {name:'', age:''}
    [arr[0], user.name] = [12, 'jpruby']
    arr
    //[12]
    user
    //{name: 'jpruby', age: ''}
    
  2. 解构对象的语法也十分相似,只是用属性名匹配,替代了数组位置的匹配

    let user = {name:'西瓜甜不甜', age:'19'}
    let {name:username, age:userage} = user 
    username
    //'西瓜甜不甜'
    userage
    //'19'
    
  3. 当变量名字和属性名一致时最适合对象解构

    let {name, age} = user
    name
    //'西瓜甜不甜'
    age
    //'19'
    

高级解构

昨天介绍了结构语法中最简单,最引人注目的部分,今天介绍更强大但不是很直观的特性

对象解构详谈
```js
let pat = {name: '西瓜甜不甜', birthday: {year:2010, month:06, day:14}}

let {birthday:{year:patsBirthYear}} = pat
```
  • 再次提醒左侧不是一个对象,而是用于描述如何与右侧进行匹配的模板,他等价于

    let patsBirthYear = pat.birthday.year
    
  • 也支持使用计算结果作为属性名

    let feild = 'Name'
    let {[feild.toLowerCase()]: patsName} = pat
    

    示例结果
    image-20220615170824522

剩余参数声明
  • 再解构数组的时候我们可以再变量名前加… 将未读取的所有剩余元素保存到一个数组中

    let arr = ['苹果', '香蕉', '梨子', '西瓜', '葡萄']
    
    let [a,b,...d] = arr
    

    image-20220615171456181

  • 如果右侧没有足够的元素,则剩余参数变量会被赋予一个空数组

    let arr = ['西瓜甜不甜']
    let [a,b, ...d] = arr
    

    image-20220615171812318

  • 剩余参数声明的语法同样适用于对象

    let boy = {name:'西瓜甜不甜', age:18 ,hobby:'做冰粉'}
    let {name:boyName, ...allButName} = boy
    

    image-20220615172245075

默认值

我们可以为每个变量提供一个默认值,如果我们需要的值再数组或对象中不存在那就使用默认值

let arr = ['西瓜甜不甜','不甜']
let [a,b,d='做冰粉才是正道'] = arr

image-20220615172834511

let boy = {name:'西瓜甜不甜',age:18}
let {name,age,girfriend='冰粉妹妹'} = boy 

image-20220615173237930

展开的玩法
  • 示例一,这里可以看到boy3集成所有属性完美!
let boy = {name:'西瓜甜不甜', age:18, hobby:'卖冰粉'}
let boy2 = {girfrient:'貂蝉'}
let boy3 = {...boy,...boy2}
//boy3
//{name: '西瓜甜不甜', age: 18, hobby: '卖冰粉', girfrient: '貂蝉'}
  • 示例二,这里可以看到后来的属性覆盖了前者
let boy = {name:'西瓜甜不甜', age:18, hobby:'卖冰粉'}
let boy2 = {name:'吕布', girfrient:'貂蝉',hobby:'杀人'}
let boy3 = {...boy, ...boy2}
//boy3
//{name: '吕布', age: 18, hobby: '杀人', girfrient: '貂蝉'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值