• 解构赋值


    //结构解析
    var [a,b,c] = [1,2,3]
    
    let [foo,[[bar],baz]] = ['foo',[['bar'],'baz']]
    
    let [x,,y] = [1,,3]
    
    let [head, ...tail] = [1,2,3,4,5]
    
    let [m,n, ...z] = [1]
    
    var [foo2] = []
    
    var [bar2,foo2] = [1]
    
    let [u,f] = [1,2,3,4]
    
    let [x1,[y1],z1] = [1,[2,3],4]
    
    //must be Array if is not Array it`s transform to iterator 
    let [foo3] = 1;
    let [foo4] = false;
    let [foo5] = NaN;
    let [foo6] = undefined;
    let [foo7] = null;
    let [foo8] = {};
    
    /* Generator
    var [aa1,aa2,aa3,aa4,aa5,aa6] = fibs();
    function* fibs(){
      var a = 0;
      var b = 1;
      while(true){
        yield a;
        [a,b] = [b, a+b]
      }
    }
    */

    默认值

    var [a = true] = []
    var [a, b = 2,c] = [1]
    var [x=1] = [undefined]
    var [x=1] = [null]
    
    function f(){
      conosole.log('aaaaa');
    }
    
    var [x = f] = [1]
    
    var [x = 1, y = x] = []
    var [x = 1, y = x] = [2]
    var [x = 1, y = x] = [2,3]
    var [x = y, y = 1] = []

     对象解析

    var {foo,bar} = {foo: 'a', bar:'b'}
    var {baz} = {a:'a',b:'b'}
    
    var {foo:baz} = {foo:'aaa',bar:'bbb'}
    
    var o = {a:'a',b:'b'}
    var {a,b} = o
    var {a:x,b:y} = o
    
    let foo2;
    ({foo2} = {foo2: 'aaa'})
    
    var obj = {
      p: ['hello',{y:'word'}]
    }
    
    var {p:[x,{y}]} = obj
    
    var node = {
      a:{
        b:{
          c: 1,
          d: 2
        }
      }
    }
    
    var {a:{b:{c}}} = node;
    
    var obj = {};
    var arr = [];
    ({foo3: obj.prop, bar3: arr[0]} = {foo3: 123, bar3: true});
    
    var {x=3} = {}
    var {x,y = 5} = {x: 1}
    
    var {message: msg = "aaaaaaaa"} = {}
    
    var {x1 = 3} = {x1: undefined}
    
    var {x1 = 3} = {x1: null}
    
    var {as} = {bar: 'aaa'}
    
    var {foo: {bar}} = {bar: 'baz'}

     字符串 数值和布尔 函数参数的 结构解析

    var [a,b,c,d,e] = 'gunduzi'
    let {toString: s} = 123
    
    let {toString: bl} = true
    
    //let {prop: x} = undefined
    //let {prop: x} = null
    
    function add([x,y]){
      console.log(x + y);
      return x+ y;
    }
    
    add([1,2]);
    
    [[1,2],[3,4]].map(([a,b]) => a+b);
    
    [1,2,3,4].map((a)=>a*a)
    
    function move({x=3,y=4} = {}){
      return [x,y]
    }
    
    function move2({x,y} = {x:0,y:0}){
      return [x,y]
    }
    
    move2({x:1,y:1});
    move2({x1});
    move2({});
    move2()
    
    [0,1,undefined,2].map((x = 'yes') => x);

     用途

    [x,y] = [y,x]
    
    function getArr(){
      return [1,2,3]
    }
    
    var [a,b,c] = getArr();
    
    function getObj(){
      return {
        foo: 'aaaa',
        bar: 'bbbb'
      }
    }
    
    var {foo,bar} = getObj();
    
    function f([a,b,c]){}
    f([1,2,3])
    function f2({a,b,c}){}
    f2(a:1,c:2,b:3)
    
    var json = {
      aa:'aa',
      bb:'bb',
      arr: [1,2,3,4],
      obj: {mm:'mm'}
    }
    
    var {aa,bb,arr:arr2,obj:obj2} = json;
    
    var ajax = function(url , {
      async = true,
      beforsend = function(){},
      cache= true,
      complete = function(){},
      crossDomain = false,
      global = true
    }){
      
    }
  • 相关阅读:
    C# 插件构架实战(Jack H Hansen )
    .Net 中的反射(动态创建类型实例) Part.4
    css3新添加属性>calc()
    详解IIS Express的详细配置、使用和注意事项
    SpringBoot 整合 Shiro 实现登录拦截
    java MD5 加密
    MyBatis xml foreach循环语句
    java 考试系统 在线学习 视频直播 人脸识别 springboot框架 前后分离 PC和手机端
    Spring Boot 事物回滚
    allowedOrigins cannot contain the special value "*" gateway 报错
  • 原文地址:https://www.cnblogs.com/xudy/p/6698090.html
Copyright © 2020-2023  润新知