美文网首页
解构赋值

解构赋值

作者: 工藤新二_cad2 | 来源:发表于2018-11-30 10:22 被阅读0次

多种解构赋值

1.解构赋值对象

let {a,b}={a:1,b:2}

//a=1,b=2,//属性一致

let {a:c}={a:1,b:2}

//属性不一致,新的变量名

c=1,a=undefined

//对象的解构是没有次序的,也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

2.解构赋值数组

//数组的解构是有次序的

let [,,c]=[1,2,3]

//c=3

let [a,...b]=[1,2,3,4];

//a=1;

//b=[2,3,4]

let [a,b,...c]=[1];

//a=1;

//b=undefined;如果解构不成功,变量的值就等于undefined。

//c=[];

不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。

let [x, y] = [1,2,3];

x// 1y// 2

let [a,[b], d] = [1,[2,3],4];

a// 1

b// 2

d // 4

3.解构赋值函参

var func=([x,y])=>console.debug(x,y);

func([1,2]);//1,2

func([1]);//1,undefined

func([]);//undefined,undefined

var func=({x,y:yy})=>{

        console.debug(x,y,yy);

    }

    func({x:1,y=2});//1,undefined,2

    func({y:2});//undefines,undefined,2

    func({});//undefined,uindefined,undefined

//三个点(...) 有2个含义。ES6中扩展运算符(spread)和剩余运算符(rest)

4.rest参数(与。。。相反)===声明就是剩余运算符

5.。。。(与rest相反)转为用逗号分隔的参数序列。(对象和数组都适用)==调用直接使用就是扩展运算符

6.函数参数与剩余运算符

7.函数参数与扩展运算符()序列,数组,对象

let func=(a,b,c)=>console.debug(c);

    var arr=[1,2,3]

    func(...arr);

//3

let foo=(a,...b)=>console.debug(a,b);

    foo(...arr);

//1,[2,3]

相关文章

网友评论

      本文标题:解构赋值

      本文链接:https://www.haomeiwen.com/subject/fcjccqtx.html