解构赋值是对赋值运算符的扩展,是一种针对数组或对象进行模式匹配,对其中变量进行赋值。
解构源: 解构赋值表达式的右边部分
解构的目标 : 解构赋值表达式的左边部分
*注意: 左右两边,结构格式要保持一致
数组
let arr = [1,2,3];
let [a,b,c] = arr;
console.log(a,b,c); //1 2 3
[a,b,c] = [1,[2,3]];
// 1 [2, 3] undefined
[a,[b,c]] = [1,[2,3]]
//1,2,3
json
let json = {
name:'Tom',
age:18
}
let {name,age} = json;
console.log(name,age);//Tom 18
函数传参
function fn({a,b}){
console.log(a,b);//1 2
}
fn({1,2})
function fn({a,b = "默认"}){
console.log(a,b); //1 "默认"
}
fn({a:1})
function fn({a = "默认",b = "默认"}){
console.log(a,b); //"默认" "默认"
}
fn({}) //正确
fn() //报错
默认值
* : 右边值为null时,视为有值,默认值无效
let [a,b,c] = [1,2];
console.log(a,b,c);//1 2 undefined
let [a,b,c = "默认值"] = [1,2]; // 1 2 默认值