1、等号右边可以为任何可以转换为对象的数据结构
1)undefined与null不能
let {pop:x} = undefined // TypeError let {pop:x} = null // TypeError
2)对于String,
3)对于
2、根据对象属性名,先找到同名属性,再赋值给对应的变量,不存在undefined
let {name:a} = {name:'sdsd'} // a = 'sdsd' let {name:name} = {name:'sdsd'} // 简写: let {name} = {name:'sdsd'} // name = 'sdsd' let g ; ({g} = {g:1}) //不能去掉括号,会将{}理解成一个代码块 console.log(g) //g =1 ({} = [1,2]) //语法正确,无意义 ({} = 'acv') //语法正确,无意义
3、对象解构可以有默认值
let {x=3} = {} let {x,y=5} = {x:1}, let {x:y=1} = {} ,//y=1 let {x:y=1} = {x:4} //y=4