解构赋值给我们一种新的变量赋值方式,主要可以利用数组解构赋值和对象解构赋值。它的用途包括:交换变量值,提取函数返回值,函数参数定义,默认值设定等等,给我们编程带来便利。

解构赋值的用途

1.交换变量的值var x = 1;var y = 2;[x,y] = [y,x];//成功交换x,y的值。2.提取函数返回的多个值(实现快速的提取对应的值)function demo(){    return {"name":"张三","age":21}}var {name,age} = demo();console.log(name);//结果:张三console.log(age);//结果:213.定义函数参数(方便提取JSON对象中想要的参数)function demo({a,b,c}){    console.log("姓名:"+ a);    console.log("身高:"+ b);    console.log("体重:"+ c);}demo({a:"张三",b:"1.72m",c:"50kg",d:"8000"});4.函数参数的默认值function demo({name="张三"}){    console.log("姓名:"+name);//结果:姓名:张三}demo({});
1.数组的解构赋值var [a,b,c] = [1,2,3]; //把数组的值分别赋给下面的变量;console.log(a);//a的值为1console.log(b);//b的值为2console.log(c);//c的值为31).结构赋值可以嵌套的var [ a,b,[ c1,c2 ] ] = [ 1,2,[ 3.1,3.2 ] ];console.log(c1);//结果:c1的值为3.1console.log(c2);//结果:c2的值为3.22).不完全解构var [a,b,c] = [1,2];console.log(a);//结果:a的值为1console.log(b);//结果:b的值为23).赋值不成功,变量的值为undefinedvar [a,b,c] = [1,2];console.log(a);//结果:a的值为1console.log(b);//结果:b的值为2console.log(c);//结果:c的值为undefined4).允许设定默认值var [a,b,c=3] = [1,2];console.log(a);//结果:a的值为1console.log(b);//结果:b的值为2console.log(c);//结果:c的值为35).覆盖默认值3var [a,b,c=3] =[1,2,4];console.log(a);//结果:a的值为1console.log(b);//结果:b的值为2console.log(c);//结果:c的值为4注意:当新的值为undefined的时候,是不会覆盖默认值的。2.对象的解构赋值  var { a,b,c } = {"a":1,"c":3,"b":2};console.log(a);//结果:a的值为1console.log(b);//结果:b的值为2console.log(c);//结果:c的值为3var { a } = {"b":2};console.log(a);//结果:a的值为undefinedvar { b:a,} = {"b":2};console.log(a);//结果:a的值为21)对象解构赋值也可以嵌套var {a:{b}} = {"a":{"b":1}};console.log(b);//结果:b的值为12)可以指定默认值var {a,b=2} = {"a":1};console.log(b);//结果:b的值为默认值23.字符串的解构赋值var [a,b,c,d,e,f] = "123456";console.log(a);//1console.log(b);//2console.log(c);//3console.log(d);//4console.log(e);//5console.log(f);//6