1.数组解构
let [a, b, c,d] = ["aa", "bb", 77,88];
alert(a) //弹出aa 可以用babel 解析看ES5的转换结果
嵌套数组解构
let [a,b,[c,d],e] =["aa",'bb',[33,44],55];
alert(c) //弹出33
空缺变量
let [a,b,,e] =["aa",'bb',[33,44],55];
//缺省可以以空格代替但是不能去掉占位的,
多余变量
let [a,b,,e,f] =["aa",'bb',[33,44],55];
alert(f); //弹出undefined 与变量f没有对应值,所以映射不过去
默认值
let [a,b,,e,f='hello'] =["aa",'bb',[33,44],55];
alert(f) //弹出给的默认值
但是 下面这种有值的情况给默认值是会被忽略的
let [a,b,,e,f='hello'] =["aa",'bb',[33,44],55,66];
alert(f) //弹出给的66
2.对象解构
// let obj={uid:121,uname:'张三'}; //对象写法一
let obj=new Object(); //对象写法二
obj.uid=111;
obj.uname='张三';
let {uid:id,uname:name}=obj; //顺序改变无影响
alert(name); //弹出张三 这个也是创建一个变量,然后去映射出它的值
小括号
let obj={uid:121,uname:'张三'};
let uid,uname;
({uid,uname} = obj); //必须有小括号,否则{}就会被解读为语句块
alert(uname);;
3.字符串解构
let[a, b, c, d] ="倚天屠龙";
console.log(a); //弹出 倚
4.函数参数解构
let obj=new Object();
obj.uid=111;
obj.uname='张三';
function analysis({uid,uname}){
alert(uid);
alert(uname);
}
analysis(obj); //把刚开始定义obj对象传进去,然后里面会自动分配好你对象的值,你只需在传参数(形参)的时候注意对象的个数(实参)即可
说的通俗一点就是 映射 将映射的值给拿出来用