ES6(壹):方便的解构赋值

583 阅读2分钟

插个旗子🚩纪念一番,这是ES6的第一篇文章( ̄︶ ̄)↗ 。

ES6

ECMAScript是一种脚本语言的标准规范,ES6(ECMAScript)于2015正式发布

ECMAScript (or ES) is a scripting-language specification standardized by Ecma International in ECMA-262 and ISO/IEC 16262. It was created to standardize JavaScript, so as to foster multiple independent implementations. ——《维基百科》

什么是解构赋值

ES6中,可以使用数组和对象对变量赋值,叫做“解构赋值”。

解构赋值可以分为:数组的解构赋值、对象的解构赋值。

解构赋值清晰又简洁,优雅又有效率。是不可多得的“赋值利器”。

使用说明书

数组的解构赋值

一一对应:

    let arr =[1,2,5];
    let [a,b,c]=arr;
    console.log([a,b,c]);

对应关系是这样滴:

如果数量不一样?? :

    let arr =[1,2,5,6];
    let [a,b,c]=arr;
    console.log([a,b,c]);

多余的会被忽略掉。

    let arr =[1,2];
    let [a,b,c]=arr;
    console.log([a,b,c]);

少的会undefined。

甚至还可以跳过:

    let arr =[1,2,3];
    let [a,,c]=arr;
    console.log([a,,c]);

对应关系是这样滴:

对象的解构赋值

一一对应:

    let a={
        first:1,
        second:2
    }
    let {first,second}=a;
    console.log({first,second})

按属性名的一一对应关系来赋值:

如果数量不一样?? :

    let a={
        first:1
    }
    let {first,second}=a;
    console.log({first,second})

找不到的属性会undefined。

如果键名不对应:

    let a={
        one:1,
        two:2
    }
    let {first,second}=a;
    console.log({first,second})

如果键名不对应,无法进行赋值。

顺序有影响吗? :

    let a={
        second:2,
        first:1
    }
    let {first,second}=a;
    console.log({first,second})

因为对象是元素的无序集合,所以顺序有并没有影响。

可以提供默认值

{first=10,second}

一些应用

交换两个变量的值(无需第三个容器)

原来我们如果要交换两个变量的值,需要这么搞:

    let a=1;
    let b=2;
    
    let c;
    c=a;
    a=b;
    b=c;
    console.log(a);
    console.log(b);

呃,有效但颇为繁琐......

但是,有了解构赋值后:

    let a=1;
    let b=2;
    
    [a,b]=[b,a]

    console.log(a);
    console.log(b);

嗯(满意),优雅~~

函数参数

原来我们写个函数,如果参数较多时,实参万一写错一个,就一步错,步步错:

    function f(a,c,b,d,e,f,g){
        console.log(a,b,c,d,e,f,g)
    }
    f("one","two","three","four","five","six","seven")

但是现在,我们有了赋值利器——解构赋值:

    function f({a,c,b,d,e,f,g}){
        console.log(a,b,c,d,e,f,g)
    }
    f({a:"one",b:"two",c:"three",d:"four",e:"five",f:"six",g:"seven"})

清晰明了,想出错都难

嗯,优雅~~

解构赋值在实际中应用还有很多。。。。。。

结束

本文对解构赋值做了简要总结,解构赋值应用广泛,本篇所述内容皮毛而已,希望有所帮助。