zoukankan      html  css  js  c++  java
  • ES6

    ES6的解构赋值就是利用模式匹配从按照一定模式的数组或者对象中提取值赋值给变量。

    1.数组的解构赋值

    在ES6以前,变量的赋值是直接指定的,以后可以这么来写,如下所示

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

    解构赋值只要等号两边的模式一致,便可解析成功,如下所示

    var [d,[f,g]] = [3,[4,5]];
    console.log(d,f,g);
    3 4 5
    -----------------------------
    var [,,e] = [0,0,1];
    console.log(e);
    1
    -----------------------------
    var [f,...g] = [2,4,5,6,7];
    console.log(g);
    Array [ 4, 5, 6, 7 ]
    

    如果解构不成功,则变量的值等于undefined,如下所示

    var [x,y] = [1];
    console.log(x,y);
    1 undefined
    

    不完全解构,即是等号左边部分匹配等号右边,如下所示

    var [x,y] = [1,2,4];
    console.log(x,y);
    1 2
    ------------------------
    var [[m],n] = [[1,2],3];
    console.log(m,n);
    1 3
    

    如果右边是不可遍历的数据解构,解构将会报错,如下所示

    var [x,y] = 1;
    TypeError: 1 is not iterable
    

    带默认值的解构赋值,如下所示

    var  [x='hello',y="world"] = [];
    console.log(x+' '+y);
    hello world
    //在ES6内部实现中,使用的是全等===来判断变量是否有值,因此变量的值不是严格的undefined,将不会采用默认值
    var [w="hello",y="world"] = [,null];
    console.log(w+' '+y);
    hello null

    2.对象的解构赋值

    对象的解构是按照属性名来的,不分先后顺序,如下所示

    var {y:j,x:i} = {x:1,y:2}
    console.log(i,j);
    1 2
    

    如果解构的时候等号左边出现等号右边没有的属性,则变量的值为undefined。如下所示

    var {y} = {z:'hello'};
    console.log(y);
    undefined
    

    对象的解构也可以使用默认值,规则和数组解构一致

    在使用已声明的变量进行对象解构赋值时,需要小心,因为大括号很有可能被解析器解析为代码块,如下所示

    var x;
    {x} = {x:1};
    SyntaxError: expected expression, got '='
    //这里需要用小括号括起来
    ({x} = {x:1});
    

    3.字符串的解构赋值

    字符串在进行解构赋值时会被转换层类数组,然后进行解析,如下所示

    const [a,b,c] = "hello";
    console.log(a,b,c);
    h e l
    
    var {length:len} = "test";
    console.log(len);
    4
    

    4.函数参数的解构赋值

    函数参数也可以使用解构赋值,如下所示

    function test([x,y]){ return x+y; }
    test([1,3]);
    4
    
    function test1({x=0,y=0}){ return x*y; }
    test1({});
    0
    test1({x:4,y:5});
    20
    

    在解构赋值中,最好不要使用小括号。

    解构赋值的用处也挺多的,比如在提取json数据,交换数据等地方

     

     

  • 相关阅读:
    IDEA git 切换分支
    java: Compilation failed: internal java compiler error
    平衡二叉树的定义
    flask的session问题以及闪现
    flask的自定义转换器,模板渲染以及请求与响应
    flask的简介:如何启动一个flask项目,flask(返回字符串,返回html,跳转路由,返回json),flask的配置文件,路由本质以及参数
    小程序的支付流程
    小程序后端如何解析wx.getUserInfo中的用户信息
    python3.6下载Crypto问题(转载)
    小程序的登入问题,普通权限认证和特殊权限的问题
  • 原文地址:https://www.cnblogs.com/zmxmumu/p/5578198.html
Copyright © 2011-2022 走看看