数组的解构赋值
- 如果匹配不到,则变量是undefined
- 如果等号右边不是数组(不可遍历的结构一包括对象),报错
{
let arr = [10,20,30]
let [a,b,c] = arr;
console.log(a,b,c) //10,20,30
}
{
/**默认值 */
let [a=true] = [];
console.log(a) //true
}
{
/*数组解构赋值 */
let [a,b,...c] = [1,2,3,4,5,6,7]
console.log(a) //1
console.log(b) //2
console.log(c) //[3,4,5,6,7]
}
对象的解构赋值
如果匹配不到,则变量是Undefined
{
let {aoo:ooo} = {aoo:'aaa',brr:'bbb'}
//aoo是匹配模式
//ooo是变量
console.log(ooo) //aaa
}
{
/**模式匹配用例 */
let obj ={
arr:[
'111',
{brr:222}
]
};
let {arr,arr:[x,{brr}]} = obj
console.log(arr,x,brr)
}
{
/**默认值生效的条件是,对象的属性值严格等于undefined*/
let {a=true} = {a:undefined}
console.log(a) //true
}
字符串解构赋值
类似于数组的对象都有一个length属性,可以对这个属性解构赋值
{
let [a,b,c] = "hello"
console.log(a,b,c); // h e l
let {length:len} = "hello"
console.log(len) //5
}
数值和布尔值的解构赋值
如果等号右边是数值和布尔值,则会先转为对象
{
let {toString:s} = 123
console.log(s)
}
函数的解构赋值
应用场景
{
function test (){
return [1,2]
}
let a,b;
[a,b] = test()
console.log(a,b)
}