es6对象赋值

1.解构赋值

let obj={
n1:'p1',
n2:'p2'
}
// //传统的写法 定义变量 使n1=obj.n1 n2=obj.n2
// let n1=obj['n1']
// let n2=obj['n2']

//变量名==属性名时
let {n1,n2}=obj //其实是它的简写:let {n1:n1,n2:n2}=obj={ n1:'p1',n2:'p2'}
console.log(n1,n2)

//变量名不等于属性名时
let {n1:x1,n2:x2}=obj
console.log(x1,x2)//p1 p2


let {n,m:m1}={n:'nn',m:'mm'}
console.log(n,m1)// nn mm

2.对象数组嵌套


let obj={a1:[1,2,3],a2:'123'}
//x=obj.a1[0]
//y=obj.a1[1]
let {a2,a1:[x,y]}=obj
console.log(a2,x,y) //'123' 1 2


let obj1={s:{n:'1'},n:[1,'2',3,'4'],m:[[1]]}
let {m:[x1],s:{n},n:[,...m2]}=obj1

console.log(x1,n,m2)// [1] '1' ['2',3,'4']

3.默认值

// let {x,y}={y:2}
// console.log(x,y)// undefined 2


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

// let {m:n}={} //m:undefined
// console.log(n) //undefined


let {m:n=4}={} //m:undefined
console.log(n) //4


//默认值生效的条件是对象的属性值必须是undefined 严格等于===
let {a:cc=11}={a:12}
console.log(cc) //12


// let {v=3}={v:undefined}
// console.log(v) //3
let {v=3}={v:null}
console.log(v) //null



//如果解构模式嵌套的是一个对象,而且这个子对象所对应的父属性不存在,那么就会报错了
let {f:{b}}={b:'bb'}
console.log(b) //Cannot destructure property `b` of 'undefined' or 'null'.



//说明:如果赋值的时候赋的不是一个对象,而是其他的数据类型的值,会将其他的数据类型的
//转换为对象
let {x,y}=1
console.log(x,y)//undefined undefined



// 把1转换为对象咋转的呢
console.log(Object(1)) //==>{__proto__:Number}



console.log(Object([1,2,3]))
let {length}=[1,2,3]
console.log(length)// 3


let {a}={a:'a'}

//JavaScript引擎会将{a}理解成一个代码块
//为了避免错误,不要讲{}写在行首


// 注意 :null 和undefined 是无法转换为对象的,所以解构赋值时会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋哈哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值