解构:
什么是解构?
==> 解构,就是将数组和对象中的值分解并赋值给全局变量 。
这里面有很多,我们一个一个来看
1.数组解构:
(1) 数组解构: [变量1,变量2]=数组
举个例子 :
var [x,y]=[1,2]
console.log(x,y)
输出一下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/1b5037a8c06e427eb5b08552ab68b0b7.png#pic_center)
我们发现,在解构的时候,有时会出现一下情况 :
数组在解构的时候,两侧时数量不对等。左侧多右侧少,或者 左侧少右侧多
// 我们需要记住,为赋值的变量即为:undefind
比如下面的这个 左侧有 x 和 y 两个变量 , 但是右侧数组却只有一个内容,由于数组解析是按照顺序一 一进行赋值的,所以,首先会给 x 赋值,再给 y 赋值,... 然后一致下去 。但是在这里由于 y 没有赋值 所以 y 即为 undefind
var [x,y]=[1];
console。log(x,y)// 1 undefined
刚才说的时左侧而右侧少,那要是 相反过来。左侧少而右侧多又是什么样子?
这种情况下,就要放弃多余的值
var [x]=[1,2]
console.log(x) // 1
结果发现,x 被赋值1,那数值2 就不要了,舍弃
(2)定义变量的默认初始值
还是那个例子。如果说,后面没有解构赋值给前面的y,y的默认值就是0
当后面有解析赋值给 y 的话,那就把初始值覆盖
var [x,y=0]=[1];// 1 0
// 如果后面有值,我们会将值赋予y
var [x,y=0]=[1,5];// 1 5
我们知道,ES6中函数的参数允许赋值默认值
function fn(a=5){
console.log(a);
}
fn();//如果没有给入参数,a 即是默认 5
fn(7);//如果给了,那就会把 初始值给覆盖,所以 a 就是 7
在这里,我们还需要注意一点 :
如果函数的形参是 function fn([a,b=5]=[0,6]){} , 那当我们调用函数 fn()的时候,如果没有传递参数,[0,6] 才会赋值给 [a,b=5],反之,如果在调用函数的时候,传递了实参,那[0,6] 是不会赋值给前面的
function fn([a,b=5]=[0,6]){
console.log(a,b);
}
fn();// 0 6
fn([3])// 3 5
fn([6,0])// 6 0
最后再说一个 ,变量交换 直接上代码
var x=1;
var y=2;
[x,y]=[y,x];
console.log(x,y);// 2 1