美文网首页
ES6 语法(解构赋值)

ES6 语法(解构赋值)

作者: 滨滨_57b5 | 来源:发表于2019-01-07 09:12 被阅读0次

    什么是解构赋值及用法

    //此处是一个块作用域
    {
      let a,b,rest;
      [a,b]=[1,2];//ES6写法,数组类型解构赋值
      //let a=1,b=2; //ES5写法
      console.log(a,b);//结果 1 2
    }
    
    {
      let a,b,rest;
      [a,b,...rest]=[1,2,3,4,5,6];
      console.log(a,b,rest);//结果 1 2 (4) [3, 4, 5, 6]
    }
    
    
    //对象结构赋值
    {
      let a,b;
      ({a,b}={a:1,b:2});
      console.log(a,b);//结果 1 2
    }
    
    
    {
      let a,b,c,rest;
      [a,b,c=3]=[1,2];//ES6写法,数组类型解构赋值
      console.log(a,b,c);//结果 1 2 3
    }
    
    {
      let a,b,c,rest;
      [a,b,c]=[1,2];//ES6写法,数组类型解构赋值
      console.log(a,b,c);//结果 1 2 undefined
    }
    

    解构赋值分类:

    • 数组解构赋值
    • 对象解构赋值
    • 字符串解构赋值
    • 布尔值解构赋值
    • 函数参数解构赋值
    • 数值解构赋值

    解构赋值的使用场景

    • 通过解构赋值实现变量的交换(如果没有解构赋值,需要声明一个中间变量才实现)
    {
      let a=1;
      let b=2;
      [a,b]=[b,a];
      console.log(a,b);//结果 2 1
    }
    
    • 服务器返回一个数组[1,2],使用解构赋值进行获取(如果没有解构赋值,需要使用一个变量接收返回结果,然后按照索引去获取对应的内容)
    {
      function f() {
        return [1,2];//第一个返回的是数量,第二返回的是金额
      }
      let a,b;
      [a,b]=f();
      console.log(a,b);//结果 1 2
    }
    
    • 服务器返回一个数组,数组中有多个元素[1,2,3,4,5,6],使用解构赋值进行选择性的获取(如果没有解构赋值,需要使用一个变量接收返回结果,然后按照索引去获取对应的内容)
    {
      function f() {
        return [1,2,3,4,5];
      }
      let a,b,c;
      [a,,,b]=f();
      console.log(a,b);//结果 1 4
    }
    
    • 服务器返回一个数组,不确定有多少个元素,只关心第一个元素,其余的直接返回一个数组即可
    {
      function f() {
        return [1,2,3,4,5];
      }
      let a,b,c;
      [a,...b]=f();
      console.log(a,b);//结果 1 [2,3,4,5]
    }
    
    {
      function f() {
        return [1,2,3,4,5];
      }
      let a,b,c;
      [a,,...b]=f();
      console.log(a,b);//结果 1 [3,4,5]
    }
    
    • 对象的解构赋值
    {
      let o={p:42,q:true};
      let {p,q}=o;
      console.log(p,q);//结果 42 true
    }
    {
      let {a=10,b=5}={a:3};
      console.log(a,b);//结果 3 5
    }
    
    //前端和后端通信,使用的数据格式是json
    {
      let metaData={
        title:'abc',
        test:[{
          title:'test',
          desc:'哈哈'
        }]
      }
      //给title指定一个接收的变量esTitle
      let {title:esTitle,test:[{title:cnTitle}]}=metaData
      console.log(esTitle,cnTitle);//结果 abc test
    }
    

    相关文章

      网友评论

          本文标题:ES6 语法(解构赋值)

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